Проблема с максимальными квотами читателей в веб-службе WCF

#wcf

#wcf

Вопрос:

Программа форматирования выдала исключение при попытке десериализации сообщения: произошла ошибка при попытке десериализации параметраhttp://tempuri.org/:GetFileResult. Сообщение InnerException гласило: «Произошла ошибка десериализации объекта типа WindowsClient.CloudServiceProxy.GetFileResponse. При чтении XML-данных превышена квота максимальной длины массива (16384). Эта квота может быть увеличена путем изменения свойства MaxArrayLength объекта XmlDictionaryReaderQuotas, используемого при создании XML reader. Строка 1, позиция 41572.’. Пожалуйста, смотрите InnerException для получения более подробной информации. Я получаю эту проблему из-за того, что sever web.config является

 <system.serviceModel>
    <services>
  <service behaviorConfigura

tion="CloudServiceBehaviour" name="Web.CloudService">
        <endpoint name="CloudServiceClientEndPoint" bindingConfiguration="CloudBindingConfig" address="http://localhost:53243/CloudService.svc" binding="wsHttpBinding" contract="Web.ICloudService"></endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="CloudServiceBehaviour">
          <serviceMetadata httpGetEnabled="True" httpGetUrl=""/>
          <serviceDebug includeExceptionDetailInFaults="true" />

        </behavior>
      </serviceBehaviors>
    </behaviors>
    <bindings>
      <wsHttpBinding>
        <binding name="CloudBindingConfig" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647">
          <readerQuotas maxDepth="200" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
        </binding>
      </wsHttpBinding>
    </bindings>
  </system.serviceModel>
  

и клиентский web.config является ,

 <system.serviceModel>
        <bindings>
            <wsHttpBinding>
              <binding name="CloudServiceClientEndPoint" closeTimeout="00:01:00"
 openTimeout="00:01:00" receiveTimeout="00:30:00" sendTimeout="00:01:00"
 bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
 maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"
 messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
 allowCookies="false">
                <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
                  maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
                <reliableSession ordered="true" inactivityTimeout="00:30:00"
                  enabled="false" />
                <security mode="Message">
                  <transport clientCredentialType="Windows" proxyCredentialType="None"
                    realm="" />
                  <message clientCredentialType="Windows" negotiateServiceCredential="true"
                    algorithmSuite="Default" />
                </security>
              </binding>
            </wsHttpBinding>
        </bindings>
        <client>
          <endpoint address="http://localhost:53243/CloudService.svc" binding="wsHttpBinding"
            contract="CloudServiceProxy.ICloudService" name="CloudServiceClientEndPoint" />
        </client>
    </system.serviceModel>
  

Комментарии:

1. В вашем клиенте web.config попробуйте добавить в <конечную точку> bindingConfiguration=»CloudServiceClientEndPoint»

Ответ №1:

Поскольку ошибка возникает при десериализации GetFileResponse объекта, это говорит о том, что проблема находится в стеке на стороне клиента.

Ваша привязка на стороне клиента использует конфигурацию по умолчанию для wsHttpBinding, потому что вы не указали имя bindingConfiguration в конечной точке. Попробуйте добавить bindingConfiguration="CloudServiceClientEndPoint" к элементу endpoint, и тогда будут выбраны ваши большие значения для настроек readerQuotas.

Комментарии:

1. Да, это был параметр, которого мне не хватало. У меня это сработало после добавления этого параметра. Спасибо.