我有一个客户过去使用过的wcf服务。
客户端和服务都使用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 :(得分:0)
因为您更新的设置特定于客户端,并且对服务没有任何意义(反之亦然)。
虽然绑定协议和安全设置需要在服务和客户端之间进行匹配,但是超时,最大收到消息大小,读者配额等等都是特定于拥有配置文件的应用程序所在的位置。 / p>
换句话说,客户可能会说“我可以除了6024800大的消息”,并且该服务并不关心。现在,如果客户端尝试向服务发送消息,该消息大于服务将接受的消息,则会出现错误。