Служба WCF Превышена квота максимальной длины массива (16384) - PullRequest
27 голосов
/ 18 июня 2010

У меня есть служба wsf и клиентское приложение.При попытке связаться с клиентом и службой я получил следующее сообщение:

" Программа форматирования вызвала исключительную ситуацию при попытке десериализации сообщения: при попытке десериализации параметра * 1004 произошла ошибка*http://tempuri.org/:blob. Сообщение InnerException было «Произошла ошибка при десериализации объекта типа FileBlob. Превышена квота максимальной длины массива (16384) при чтении данных XML. Эту квоту можно увеличить, изменив свойство MaxArrayLength в объекте XmlDictionaryReaderQuotasиспользуется при создании читателя XML. Строка 1, позиция 25931. '. Более подробную информацию смотрите в InnerException."

У меня есть элемент customBinding, и он не позволяет мне вставить раздел" readerQuotas ",В клиентской и сервисной конфигурациях у меня есть следующий обязательный элемент:

<customBinding>
  <binding name="LicenseServiceBinding"
                closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00">
      <security authenticationMode="UserNameOverTransport">
          <localClientSettings maxClockSkew="00:07:00" />
          <localServiceSettings maxClockSkew="00:07:00" />
      </security>
      <windowsStreamSecurity />
      <httpsTransport maxReceivedMessageSize="2147483646"/>          
  </binding>
</customBinding>

Заранее благодарен за любую помощь:)

Ответы [ 2 ]

43 голосов
/ 21 июня 2010

На самом деле, я решил проблему, добавив readerQuotas в раздел textMessageEncoding. Спасибо за помощь.

<textMessageEncoding messageVersion="Soap11">
          <readerQuotas maxDepth="32" maxStringContentLength="5242880" maxArrayLength="2147483646" maxBytesPerRead="4096" maxNameTableCharCount="5242880"/>
</textMessageEncoding>
18 голосов
/ 18 июня 2010

Вы должны иметь возможность добавить элемент <readerQuotas> внутри элемента <binding>:

<customBinding> 
  <binding name="LicenseServiceBinding" 
                closeTimeout="00:01:00" openTimeout="00:01:00" 
                receiveTimeout="00:10:00" sendTimeout="00:01:00"> 
      <security authenticationMode="UserNameOverTransport"> 
          <localClientSettings maxClockSkew="00:07:00" /> 
          <localServiceSettings maxClockSkew="00:07:00" /> 
      </security> 
      <readerQuotas maxArrayLength="32768" />
      <windowsStreamSecurity /> 
      <httpsTransport maxReceivedMessageSize="2147483646"/>           
  </binding> 
</customBinding> 

Вы упомянули, что он "не позволяет мне вставлять".Какое сообщение об ошибке вы получаете?

...