2011-09-29 6 views
5

Sto utilizzando il modello a oggetti client per interagire con Sharepoint 2010. Quando ho provato a caricare documenti superiori a 3 MB utilizzando Client OM, ha emesso un errore Richiesta non valida. Microsoft suggerisce this per risolvere il problema. Ho provato e aggiornato la proprietà maxReceivedMessageSize. Funziona correttamente dopo il riavvio del sistema, ma non viene applicato a un server sharepoint in esecuzione.SP2010 Client Object Modello 3 Limite MB - aggiornamento maxReceivedMessageSize non applicato

Presumo che, poiché l'impostazione potrebbe essere stata mantenuta in memoria, è necessario un ripristino dell'applicazione, ma non riesco a capire cosa resettare. Ho provato a resettare diversi servizi Sharepoint. Ho provato a resettare il sito Web di Sharepoint in IIS. Niente aiuta

Inoltre, se si imposta un limite di 10 MB, ad esempio, sono in grado di caricare documenti di circa 7,5 MB. Penso che sia a causa di ulteriori metadati (proprietà del tipo di contenuto ecc.). È questo comportamento corretto o ho bisogno di cambiare anche qualcos'altro.

Apprezzerei qualsiasi aiuto.

Saluti.

+0

Dubito che ci sia un 25% di sovraccarico di metadati per ogni payload. Questo sarebbe inaccettabile. –

risposta

0

come per il link è stato inviato il modo corretto per ottenere ciò che è necessario dovrebbe essere qualcosa di simile:

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(); 
} 

si prega di mostrare il codice modificando la tua domanda e anche spiegare quale sistema si riavvia e poi si funziona invece come il riavvio o il riciclaggio siti SP, dove si sostiene che non funziona ...

+0

Grazie per la tua risposta Davide. Ho appena copiato lo stesso codice dal link Microsoft nella mia consol-application in esecuzione sul server. Riavviando il sistema, volevo dire, ho riavviato la macchina e poi ha funzionato. Capisco che questa sia un'impostazione WCF per Sharepoint Client OM, ma non capisco dove si trova o come ripristinarlo. – shaibee

5

ho trovato this TechNet Forum entry che mi ha aiutato a risolvere questo problema:

Informare SharePoint per aumentare le dimensioni del file seguendo i passaggi seguenti.
Ø Come amministratore del sito di SharePoint, accedere a SharePoint 2010 Management Shell per
1. Nel menu Start, fare clic su Tutti i programmi.
2. Fare clic su Prodotti Microsoft SharePoint 2010.
3. Fare clic su Shell di gestione SharePoint 2010.
Ø Quindi eseguire i comandi seguenti.

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

Dillo Asp.Net per aumentare la dimensione del file seguendo la procedura di seguito.
Ø Modificare tutti i file web.config coinvolti per aggiungere l'elemento '<httpRuntime>'.
Al termine, l'aggiunta dovrebbe essere simile all'esempio seguente.
Ø 2147483647 byte equivalgono a 1,99 GB.
<system.web>
<httpRuntime useFullyQualifiedRedirectUrl="true" maxRequestLength="2147483647" requestLengthDiskThreshold="2147483647" executionTimeout="18000"/> </system.web>

di Tell IIS 7.0 e fino ad aumentare la dimensione del file seguendo la procedura di seguito.
Modifica tutto il web.file di configurazione coinvolti per aggiungere l'elemento '<requestLimits>'.
Al termine, l'aggiunta dovrebbe essere simile all'esempio seguente.
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="2147483647" />
</requestFiltering>
</security>
</system.webServer>

Spero che questo aiuta!

2

Questo non è un problema o un limite difficile di SharePoint. Si tratta di un limite di caricamento operativo impostato per proteggere l'infrastruttura di SharePoint. Mentre il limite di caricamento operativo è 2 MB, il limite di caricamento binario è di 50 MB.

Al momento non ci sono 3 approcci:

  1. Come si è già accennato, aumentare il MaxReceivedMessageSize.

  2. Utilizzare i metodi SaveBinaryDirect

    sono stati introdotti Questi metodi che iniziano con SharePoint 2010. Fondamentalmente usi Distributed Authoring Versioning (DAV) per fare una richiesta PUT. Utilizzando questo approccio, hai un limite di upload binario di 50 MB.

    Ecco un esempio di implementazione approccio # 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. Se si utilizza SharePoint 2013 o superiore, è possibile utilizzare API REST. Il limite di caricamento è 2 GB.

Problemi correlati