wcf绑定 - 服务和客户端不匹配

时间:2016-07-14 21:26:09

标签: c# wcf

我有一个客户过去使用过的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),它仍然有效。 为什么这样做? 我无法找到任何地方说客户端和服务器将起作用,如果绑定不同,我既困惑又好奇为什么它的工作

1 个答案:

答案 0 :(得分:0)

因为您更新的设置特定于客户端,并且对服务没有任何意义(反之亦然)。

虽然绑定协议和安全设置需要在服务和客户端之间进行匹配,但是超时,最大收到消息大小,读者配额等等都是特定于拥有配置文件的应用程序所在的位置。 / p>

换句话说,客户可能会说“我可以除了6024800大的消息”,并且该服务并不关心。现在,如果客户端尝试向服务发送消息,该消息大于服务将接受的消息,则会出现错误。