2016-07-14 2 views
0

У меня есть служба wcf, которая использовалась клиентом для прошлого.wcf bindings - сервис и клиент не совпадают

Оба клиента и службы используют basicHttpBinding, где нет дополнительных настроек.

У меня теперь есть новый клиент, вызывающий службу для большого количества данных, что приводит к исключению на стороне клиента, когда он пересылает размер по умолчанию 65536.

Поэтому я добавил MaxReceivedMessageSize как это было предложено на много ответов на этот вопрос

<bindings> 
    <basicHttpBinding> 
     <binding 
      name="Service1BasicHttpBinding" 
      maxReceivedMessageSize="6024800" 
      maxBufferPoolSize="6024800"> 
     </binding> 
    </basicHttpBinding> 
</bindings> 

Это был добавлен как к службе и клиента, службы:

<services> 
    <service name="MyService" > 
     <endpoint 
      binding="basicHttpBinding" 
      bindingConfiguration="Service1BasicHttpBinding" 
      contract="MyServiceContract" /> 
    </service> 
</services> 

Клиент:

<client> 
    <endpoint 
     address="http:myendpoint" 
     binding="basicHttpBinding" 
     bindingConfiguration="Service1BasicHttpBinding" 
     contract="MyServiceContract" 
      name="MyService" /> 
</client> 

И все работает хорошо. Мой вопрос: у меня есть не обновил мой другой клиент, чтобы иметь одинаковую привязку и bindingConfiguration (Service1BasicHttpBinding), и он все еще работает. Почему это работает? Я не могу найти нигде, где говорится, что клиент и сервер будут работать, если привязки различны, и я оба озадачен, и мне любопытно, почему это работает.

ответ

0

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

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

Другими словами, клиент может сказать: «Я могу исключить сообщение размером 6024800», и услуге все равно. Теперь, если клиент пытается выполнить , отправьте сообщение, которое больше, чем услуга примет, вы получите сообщение об ошибке.

Смежные вопросы