У меня есть служба WCF, которая работает для базовых запросов. Я начал просто с стандартных привязок из коробки (WSHttpBinding со значениями по умолчанию).
Контракт с данными для массива пользовательских объектов, каждый объект имеет размер около 6 КБ. Когда я отправляю до 5 из них (за одну транзакцию), все работает нормально. Когда я пытаюсь отправить 6 или больше, я получаю эту ошибку:
"Удаленный сервер возвратил ошибку: (400) неверный запрос."
Я исследовал некоторые привязки и попытался настроить конфигурации на клиенте следующим образом:
<binding name="WSHttpBinding_IASRService" closeTimeout="00:10:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:10:00"
bypassProxyOnLocal="false" transactionFlow="false"
hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="50000000" maxReceivedMessageSize="50000000"
messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
allowCookies="false">
<readerQuotas maxDepth="50000000" maxStringContentLength="50000000"
maxArrayLength="50000000" maxBytesPerRead="50000000"
maxNameTableCharCount="50000000" />
<reliableSession ordered="true" inactivityTimeout="00:10:00"
enabled="false" />
</binding>
Аналогичным образом я настраиваю конфигурации в файле services web.config, однако проблема все еще сохраняется.
Я также попытался установить для клиента app.config значение messageEncoding = "Mtom", но это вызвало еще одну ошибку привязки, указав, что привязки между клиентом и сервером могут быть несовместимыми, поэтому я удалил это сейчас. (Хотя Mtom также был указан на сервере web.config.) Кроме того, в моем исследовании я еще не нашел четкого простого описания каждого из свойств привязки.
Итак, я пытаюсь ответить на следующие вопросы:
- Как получить большие запросы, чтобы не генерировать ошибку неверного запроса
- Как установить клиент на Mtom без генерации ошибки
- Есть ли хороший базовый справочник по каждому из свойств привязки и как их использовать?