Ändern die MaxArrayLength Eigenschaft auf der XmlDictionaryReaderQuotas-Objekt, wenn die XML-Leser zu schaffen

StackOverflow https://stackoverflow.com/questions/1035600

Frage

Ich erhalte die folgende Ausnahme beim Senden (oder empfangen) ein Byte-Array zu einem C # Service.

There was an error deserializing the object of type System.Byte[]. 
The maximum array length quota (16384) has been exceeded while reading XML data. 
This quota may be increased by changing the MaxArrayLength property on the XmlDictionaryReaderQuotas object used when creating the XML reader. 
Line 6, position 34838.'.  
Please see InnerException for more details

Für das, was ich die XmlDictionaryReader verstehen kann, wird durch den Webservice automatisch erstellt.

Also, wie kann ich die "MaxArrayLength" Eigenschaft ändern?

Dies ist der Implementierungscode:

    public string addFile(string sharePointServer, string documentLibrary, 
                          byte[] content, string fileName) 
    {
        try
        {
            SPWeb spWeb = new SPSite(sharePointServer).OpenWeb();
            SPFolder spFolder = spWeb.GetFolder(documentLibrary);
            SPFileCollection spFileCollection = spFolder.Files;
            SPFile spFile = spFileCollection.Add(fileName, content, true);
            return spFile.TimeCreated.ToLongDateString() + "::" + spFile.Title;
        } 
            catch (Exception ex) 
        {
            throw ex;
        }
    }

Dateien <16kb hochgeladen.

Dateien> 16kb sind es nicht.

Dateien> 10 MB problemlos heruntergeladen werden.

Wo ist diese Eigenschaft konfiguriert?

War es hilfreich?

Lösung

Ist es ein WCF-Dienst? Wenn ja, können Sie die MaxArrayLength in der Bindung ändern, wie auf diese SO Post gesehen:

Post

P. S. Warum würden Sie einen benutzerdefinierten Service verwenden, wenn es OOTB Sharepoint Service, die Dateien hochladen? das heißt, die Lists.asmx wie in diesem Artikel:

Artikel

Andere Tipps

Fügen Sie ein <readerQuotas> Element innerhalb des <binding> Element und fügen Sie MaxArrayLength Eigenschaft

 <bindings>
     <wsHttpBinding>
         <binding name ="Your WSHttpBinding Name" sendTimeout="00:05:00" maxReceivedMessageSize="2147483647">
             <security mode="None"></security>
             <readerQuotas maxStringContentLength="134217728" maxArrayLength="2147483647" />
             <reliableSession enabled="true"/>
         </binding>
     </wsHttpBinding>
 </bindings>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top