我遇到了一些我认为很简单的问题。
当尝试通过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>
我缺少一部分来正确分配绑定吗?
答案 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>
还需要配置MaxBufferSize
和ReaderQuotas
属性。
MaxBufferSize
ReaderQuotas
随时让我知道问题是否仍然存在。