Изменение свойства MaxArrayLength для объекта XmlDictionaryReaderQuotas, используемого при создании средства чтения XML - PullRequest
3 голосов
/ 24 июня 2009

Я получаю следующее исключение при отправке (или получении) байтового массива в службу C #.

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

Насколько я понимаю, XmlDictionaryreader автоматически создается веб-службой.

Итак, как я могу изменить свойство MaxArrayLength?

Это код реализации:

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

Файлы <16 КБ загружены. </p>

Файлы> 16 КБ не являются.

Файлы> 10 Мб скачиваются без проблем.

Где настроено это свойство?

Ответы [ 2 ]

7 голосов
/ 24 июня 2009

Это услуга WCF? Если это так, вы можете изменить максимальную длину в привязке, как показано на этом посте SO:

запись

P.S. Зачем использовать пользовательскую службу, если есть службы OOTB Sharepoint, которые могут загружать файлы? то есть Lists.asmx, как в этой статье:

1012 * статья *

1 голос
/ 09 января 2017

Добавьте элемент <readerQuotas> внутри элемента <binding> и добавьте MaxArrayLength свойство

 <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>
...