Конфигурация привязки WCF применяется только по умолчанию, но, как указано, она не работает - PullRequest
4 голосов
/ 28 марта 2012

У нас есть интересная проблема с привязкой WCF и режимом потоковой передачи, которую мы не можем решить:

У нас есть конечная точка WCF, настроенная на режим потоковой передачи.Конечная точка получает сообщение, намного превышающее размер по умолчанию (~ 65 КБ).Поэтому мы указали больший размер сообщения в атрибуте maxReceivedMessageSize тега привязки.

Проблема заключается в том, что мы соединяем конечную точку и привязку с помощью атрибута bindingConfiguration для тега конечная точка и атрибута name на привязка , мы получаем следующую ошибку: «Удаленный сервер возвратил ошибку: (400) неверный запрос».

Как только мы удалим оба атрибута bindingConfiguration и имя работает без ошибок.

Вот определение службы конечная точка :

    <service name="Services.DocumentService" behaviorConfiguration="ServiceBehavior">
    <endpoint contract="ServiceContracts.IDocumentService" address="DocumentService"
              binding="basicHttpBinding" name="basicHttpBinding" 
      bindingConfiguration="BindingConfiguration"     <---- when this goes away
              behaviorConfiguration="ServiceEndpointBehavior"/>
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:8080/Documents/"/>
      </baseAddresses>
    </host>
    </service>

Вот конфигурация привязки :

    <binding  
      name="BindingConfiguration" <---- and when this goes away
     transferMode="Streamed" maxReceivedMessageSize="2147483647"  >
      <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
                    maxArrayLength="2147483647" maxBytesPerRead="2147483647"
                    maxNameTableCharCount="2147483647" />
    </binding>

Таким образом, она работает только как привязка по умолчанию (без явно названного ключа).Странно то, что мы смогли проверить на хосте Сервиса, что конфигурация привязки действительно применяется (maxReceivedMessageSize был установлен правильно) в обоих сценариях.Может ли это быть ошибкой в ​​WCF?

Служба работает самостоятельно.

Любые идеи очень ценятся?

Ответы [ 2 ]

0 голосов
/ 26 июня 2012

Недавно мы обнаружили, что код инициализации явно использует настройки по умолчанию и, таким образом, игнорирует настройки в файле web.config.

Мы удалили эту часть кода, и настройки из web.config были применены.

Глупая ошибка.

Спасибо всем за ответы

0 голосов
/ 28 марта 2012

При удалении bindingConfiguration = "BindingConfiguration" используются значения по умолчанию, а не значения в конфигурации привязки.

Разница:

transferMode="Streamed"

По умолчанию режим передачи буферизован, поэтому, если клиент ожидает буферизацию и сервер использует потоковую передачу, вы получите ошибку неверного запроса.

...