为wsHttpBinding分配自定义绑定配置

时间:2020-04-16 15:59:19

标签: c# wcf binding wshttpbinding

我遇到了一些我认为很简单的问题。

当尝试通过WCF发送“大”消息时,出现错误:

传入邮件的最大邮件大小配额(65536)已达到 超出。要增加报价,请使用MaxReceivedMessageSize 适当的绑定元素上的属性。

为解决此问题,我创建了一个自定义绑定配置,该配置的MaxReceivedMessageSize值更高。但是我仍然会收到错误消息,好像没有读取该值。

这是我的服务器App.config:

<system.serviceModel>
    <bindings>
      <wsHttpBinding>
        <binding name="largeBinding" maxReceivedMessageSize="2147483647">
          <readerQuotas maxArrayLength="2147483647"/>
        </binding>
      </wsHttpBinding>
    </bindings>
    <services>
      <service name="EMS.Services.TradeController">
       <endpoint address="http://localhost:9002/TradeService"
                  binding="wsHttpBinding"
                  bindingConfiguration="largeBinding"
                  contract="EMS.Contracts.Services.ITradeService"/>
      </service>
    </services>
  </system.serviceModel>

这是我的客户端App.config:

<system.serviceModel>
<bindings>
  <wsHttpBinding>
    <binding name="largeBinding" maxReceivedMessageSize="2147483647">
      <readerQuotas maxArrayLength="2147483647"/>
    </binding>
  </wsHttpBinding>
</bindings>
<client>
  <endpoint address="http://localhost:9002/TradeService"
            binding="wsHttpBinding"
            bindingConfiguration="largeBinding"
            contract="EMS.Contracts.Services.ITradeService"/>
</client>

我缺少一部分来正确分配绑定吗?

1 个答案:

答案 0 :(得分:0)

Adding Service Reference工具是否自动生成了客户端的配置?我怀疑客户端代理是否使用Wshttpbinding创建的服务端点。您当前的配置似乎没什么。
此外,请考虑配置其他属性。

     <wsHttpBinding>
        <binding name="largeBinding" allowCookies="true"
 maxReceivedMessageSize="20000000"
 maxBufferSize="20000000"
 maxBufferPoolSize="20000000">
          <readerQuotas maxDepth="32"
 maxArrayLength="200000000"
 maxStringContentLength="200000000"/>
        </binding>
      </wsHttpBinding>

还需要配置MaxBufferSizeReaderQuotas属性。
MaxBufferSize
ReaderQuotas
随时让我知道问题是否仍然存在。