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

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

Вопрос

Я получаю следующее исключение при отправке (или получении) байтового массива в службу 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;
        }
    }

Файлы < 16kb загружены.

Файлы > 16кб нет.

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

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

Это было полезно?

Решение

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

сообщение

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

статья

Другие советы

Добавьте элемент <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>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top