Ограничение размера массива веб-службы - PullRequest
1 голос
/ 10 февраля 2009

Мой веб-метод продолжал давать сбой, и в результате расследований выяснилось следующее:

Форматировщик выдал исключение, пока пытаясь десериализовать сообщение: Ошибка в десериализации тела запроса сообщение для операции «SendFirmware». Максимальная квота длины массива (16384) был превышен при чтении XML данные. Эта квота может быть увеличена на изменение свойства MaxArrayLength на XmlDictionaryReaderQuotas объект, используемый при создании XML читатель.

Рассматриваемый массив - это byte[], содержащий образ прошивки, указанный в названии метода. Вот почему в нем так много элементов. Хорошо, изумительно, теперь я знаю, что не так, и если бы я явно управлял XML, это не было бы проблемой. Но я не, это все неявно.

Как установить это в файле конфигурации для веб-службы?

1 Ответ

6 голосов
/ 10 февраля 2009

Это можно установить в файле web.config в разделе:

<system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="BasicHttpBinding" maxBufferSize="2147483647" 
               maxReceivedMessageSize="2147483647">
          <readerQuotas maxDepth="32" maxStringContentLength="8388608" 
               maxArrayLength="16384" maxBytesPerRead="4096" 
               maxNameTableCharCount="16384" />
        </binding>
      </basicHttpBinding>
    </bindings>
</system.serviceModel>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...