точная настройка креплений WCF - PullRequest
2 голосов
/ 11 июня 2009

У меня есть служба 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.) Кроме того, в моем исследовании я еще не нашел четкого простого описания каждого из свойств привязки.

Итак, я пытаюсь ответить на следующие вопросы:

  1. Как получить большие запросы, чтобы не генерировать ошибку неверного запроса
  2. Как установить клиент на Mtom без генерации ошибки
  3. Есть ли хороший базовый справочник по каждому из свойств привязки и как их использовать?

Ответы [ 3 ]

2 голосов
/ 11 июня 2009

Вот совет, который я выучил трудному пути для вашего # 2:

Каждый раз, когда вы вносите изменения в WCF на стороне сервера, перекомпилируйте проект сервера, а затем «Ссылка на обновление» на стороне клиента (щелкните ссылку службы правой кнопкой мыши).

1 голос
/ 13 июня 2009

Я наконец понял это!

О ТАК всех местах, см. этот вопрос

Это решило мою главную проблему (# 1). Я все еще ищу четкое описание того, как настроить различные свойства привязки WCF. Я посмотрел онлайн, в книгах и в документах по API на MSDN. Если кто-то знает что-то, что действительно объясняет это, пожалуйста, опубликуйте это здесь. Кажется, что WCF довольно прост, пока вы не попадаете в детали привязки.

1 голос
/ 11 июня 2009

Лучшим вариантом для начала отладки будет оперативный подход. Я бы вытащил Fiddler и убедился, что клиент отправляет действительный запрос.

...