2011-09-29 18 views
5

Estoy utilizando Client Object Model para interactuar con Sharepoint 2010. Cuando traté de cargar documentos de más de 3 MB utilizando Client OM, se produjo un error de solicitud incorrecta. Microsoft sugiere this para solucionar el problema. Intenté eso y actualicé la propiedad maxReceivedMessageSize. Funciona bien después de reiniciar el sistema, pero no se aplica a un servidor de SharePoint en ejecución.SP2010 Client Object Model Límite de 3 MB: la actualización de maxReceivedMessageSize no se aplica

Supongo que como la configuración podría haberse mantenido en la memoria, también necesita un reinicio de la aplicación, pero no puedo descifrar qué reiniciar. He intentado restablecer diferentes servicios de Sharepoint. He intentado restablecer el sitio web Sharepoint en IIS. Nada ayuda.

Además, si configuro un límite de 10 MB, por ejemplo, puedo cargar documentos de alrededor de 7,5 MB. Creo que eso se debe a los metadatos adicionales (propiedades de tipo de contenido, etc.). ¿Es este comportamiento correcto o necesito cambiar algo más también?

Agradecería cualquier ayuda.

Atentamente.

+0

Dudo que haya un 25% de sobrecarga de metadatos para cada carga útil. Esto sería inaceptable. –

Respuesta

0

según el enlace que ha enviado la forma correcta para conseguir lo que necesita debe ser algo como esto:

public static void IncreaseMaxReceivedMessageSize() 
{ 
    SPWebService contentService = SPWebService.ContentService; 

    /* Must set this to -1, else, the MaxReceivedMessageSize value for 
    SPWebService.ContentService.WcfServiceSettings["client.svc"] will not be used.*/ 
    contentService.ClientRequestServiceSettings.MaxReceivedMessageSize = -1; 

    // SPWcfServiceSettings has other Properties that you can set. 
    SPWcfServiceSettings csomWcfSettings = new SPWcfServiceSettings(); 
    csomWcfSettings.MaxReceivedMessageSize = 10485760; // 10MB 
    contentService.WcfServiceSettings["client.svc"] = csomWcfSettings; 

    contentService.Update(); 
} 

favor muestre su código mediante la edición de su pregunta y también a explicar qué sistema se reinicia y luego se que funciona en oposición como reiniciar o centros de reciclaje SP en el que reclama que no funciona ...

+0

Gracias por su respuesta Davide. Acabo de copiar el mismo código del enlace de Microsoft en mi aplicación de consola que se ejecuta en el servidor. Al reiniciar el sistema, quise decir que reinicié la máquina y luego funcionó. Entiendo que esta es una configuración de WCF para Sharepoint Client OM, pero no entiendo dónde está ubicada ni cómo restablecerla. – shaibee

5

he encontrado this TechNet Forum entry la que me ayudó a resolver este problema:

Indique a SharePoint que aumente el tamaño de su archivo siguiendo los pasos a continuación.
Ø Como administrador del sitio de SharePoint, acceda al Shell de administración de SharePoint 2010 por
1. En el menú Inicio, haga clic en Todos los programas.
2. Haga clic en Productos de Microsoft SharePoint 2010.
3. Haga clic en Shell de administración de SharePoint 2010.
Ø Luego ejecute los comandos a continuación.

get-PSSnapin - Registered
Add-PSSnapin Microsoft.SharePoint.Powershell
$ws = [Microsoft.SharePoint.Administration.SPWebService]::ContentService
$ws.ClientRequestServiceSettings.MaxReceivedMessageSize = 2147483647
$ws.Update()

Dile a Asp.Net para aumentar su tamaño del archivo siguiendo los pasos a continuación.
Ø Edite todos los archivos web.config involucrados para agregar el elemento '<httpRuntime>'.
Cuando haya terminado, su adición debe verse como en el ejemplo a continuación.
Ø 2147483647 bytes es igual a 1,99 GB.
<system.web>
<httpRuntime useFullyQualifiedRedirectUrl="true" maxRequestLength="2147483647" requestLengthDiskThreshold="2147483647" executionTimeout="18000"/> </system.web>

Tell IIS 7.0 y arriba para aumentar el tamaño del archivo siguiendo los pasos a continuación.
Editar toda la web.archivos de configuración implicados para agregar el elemento '<requestLimits>'.
Cuando haya terminado, su adición debe verse como en el ejemplo a continuación.
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="2147483647" />
</requestFiltering>
</security>
</system.webServer>

espero que esto ayude!

2

Esto no es un problema o límite de SharePoint. Este es un límite de carga operacional establecido para proteger la infraestructura de SharePoint. Si bien el límite de carga operacional es de 2 MB, el límite de carga binaria es de 50 MB.

Hay actualmente 3 enfoques:

  1. Como ya se ha mencionado, aumentar la maxReceivedMessageSize.

  2. Use los métodos SaveBinaryDirect

    se introdujeron Estos métodos de arranque con SharePoint 2010. Se utiliza básicamente distribuido de creación de versiones (DAV) para hacer una solicitud PUT. Al usar este enfoque, tiene un límite de carga binaria de 50 MB.

    Aquí es un ejemplo de implementación del método # 2,

    string siteURL = "https://records.contoso.com"; 
    
    using (var context = new Microsoft.SharePoint.Client.ClientContext(siteURL)) 
    { 
        context.Credentials = new NetworkCredential(
         "username", 
         "password", 
         "domain"); 
        string filePathToUpload = "C:\test\test.txt"; 
        context.ExecuteQuery(); 
    
        using (FileStream fs = new FileStream(filePathToUpload, FileMode.Open) 
        { 
         string targetURL = "/testsite/test.txt"; 
         Microsoft.SharePoint.Client.File.SaveBinaryDirect(
         context, 
         targetURL, 
         fs, 
         true); 
        } 
    } 
    
  3. Si está utilizando SharePoint 2013 o mayor, puede utilizar la API REST. El límite de carga es de 2 GB.

Cuestiones relacionadas