Веб-сервис WCF: неверный запрос HTTP / 1.1 400 при отправке большого ввода - PullRequest
3 голосов
/ 03 сентября 2010

Я подключаюсь к веб-сервису на основе WCF. Для определенных методов вход содержит список объектов / структур. Когда количество элементов в этом списке превышает определенное количество, служба завершается с ошибкой HTTP/1.1 400 Bad Request, когда я пытаюсь проверить то же самое с помощью SOAPUI. Я попытался изменить файл web.config со следующими изменениями:

<httpRuntime maxRequestLength="2097151" />

   <binding name="basicHTTP" closeTimeout="00:01:00"
        openTimeout="00:01:00" receiveTimeout="00:01:00" sendTimeout="00:01:00" maxReceivedMessageSize="4194304" maxBufferSize="98547" maxBufferPoolSize="258547">
     <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
   </binding>

Ответы [ 2 ]

3 голосов
/ 10 сентября 2010

Проблема была решена настройкой maxReceivedMessageSize.Первоначально в моей привязке я не устанавливал bindingConfiguration явно, хотя basicHttpBinding был объявлен и установлен.

Поскольку такие изменения в maxReceivedMessageSize в привязке не применялись, и по умолчанию была активна настройка 64 КБ.Я установил привязки как:

<endpoint address="" binding="basicHttpBinding" bindingConfiguration="basicHttpBinding"
 name="AMS" bindingName="basicHttpBinding" contract="Entity.AccuchekMobility.Service.IAccuchekMobilityService" />

   <binding name="basicHttpBinding" closeTimeout="00:01:00"
        openTimeout="00:01:00" receiveTimeout="00:02:00" sendTimeout="00:01:00" maxReceivedMessageSize="4194304" maxBufferPoolSize="524288" maxBufferSize="4194304">
2 голосов
/ 03 сентября 2010

Помните, что maxReceivedMessageSize находится в байтах, тогда как maxRequestLength находится в килобайтах Также для буферизованной передачи установите размер буфера равным максимальному размеру сообщения. Насколько велик ошибочный ввод?

...