Проблема с большими запросами в WCF - PullRequest
8 голосов
/ 19 сентября 2011

Я видел эту проблему, опубликованную миллион раз, но ни одно из решений не помогло мне ... Итак, я иду:

При вызове службы WCF я получаю следующую ошибку:

Средство форматирования выдало исключение при попытке десериализации об ошибке: при попытке десериализации параметра произошла ошибка http://BlanketImportService.ServiceContracts/2011/06:request. Сообщение InnerException было «Произошла ошибка десериализации объект типа BlanketImport.BlanketImportRequest. Максимальный массив длина квоты (16384) была превышена при чтении данных XML. это квота может быть увеличена путем изменения свойства MaxArrayLength на Объект XmlDictionaryReaderQuotas, используемый при создании программы чтения XML. Строка 1, позиция 44440. '. Пожалуйста, смотрите InnerException для более подробной информации.

Я изменил readerQuotas на клиентском сервере И применил тег bindingConfiguration.

Вот конфигурация сервера:

<bindings>
  <basicHttpBinding>
    <binding name="BilagImportBinding" maxBufferSize="2147483647"
      maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647">
      <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
        maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
    </binding>
  </basicHttpBinding>
</bindings>

<services>
  <service name="BlanketImport">
    <endpoint address="" binding="basicHttpBinding" bindingConfiguration="BilagImportBinding" bindingNamespace="http://BlanketImportService.ServiceContracts/2011/06" contract="BlanketImport.IBlanketImport">
    </endpoint>
  </service>
</services>

И клиентский конфиг:

  <bindings>
    <basicHttpBinding>
      <binding name="BilagImportBinding" maxBufferSize="2147483647"
        maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647">
        <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
          maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
      </binding>
    </basicHttpBinding>
  </bindings>
  <client>
    <endpoint address="http://localhost/BlanketImport/BlanketService.svc"
      binding="basicHttpBinding" bindingConfiguration="BilagImportBinding" contract="BlanketServiceReference.IBlanketService"
      name="BasicHttpBinding_IBlanketService" />
  </client>

Ответы [ 3 ]

19 голосов
/ 20 сентября 2011

Нашел решение ... Но все равно очень странно!

Если я удаляю атрибут name из моего тега привязки и атрибут bindingConfiguration из моего тега конечной точки, все работает.Это означает, что конфигурация basicHttpBinding является конфигурацией по умолчанию для всех конечных точек basicHttpBinding

2 голосов
/ 01 февраля 2012

У меня была такая же проблема при попытке загрузить файлы с использованием WCF с использованием именованной конфигурации привязки. Это связано с изменениями в WCF 4.0 и «упрощенной» конфигурации (см. MSDN )

К вашему сведению: я пробовал все, чтобы решить эту проблему; параметром службы был байтовый массив, поэтому мы удалили его и использовали поток, попытались изменить режим буферизации по сравнению с режимом потоковой передачи и, очевидно, 1,5 миллиона параметров конфигурации, чтобы изменить размеры, которые никогда не выбирались с именованной конфигурацией.

Очень странно, но работает с вашим предложением.

0 голосов
/ 21 февраля 2014

У меня была похожая проблема, когда именованная привязка не использовалась конечной точкой. Моей проблемой была опечатка в названии сервиса. Как сказал Livewire, упрощенная конфигурация WCF 4 автоматически создает конечную точку, и моя определенная конечная точка не перезаписывает ее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...