【问题标题】:wcf bindings - service and client dont matchwcf 绑定 - 服务和客户端不匹配
【发布时间】:2016-07-14 21:26:08
【问题描述】:

我有一个 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>

而且一切正常。 我的问题是我 not 更新了我的其他客户端以具有相同的绑定和 bindingConfiguration(Service1BasicHttpBinding) 并且它仍然有效。 为什么这行得通? 如果绑定不同,我找不到任何地方说客户端和服务器将工作,并且对它为什么工作感到困惑和好奇

【问题讨论】:

    标签: c# wcf


    【解决方案1】:

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

    虽然绑定协议和安全设置需要在服务和客户端之间匹配,但超时、最大接收消息大小、读取器配额等内容特定于拥有定义它们的配置文件的应用程序。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-24
      • 2012-02-18
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      相关资源
      最近更新 更多