首页 > 解决方案 > WCF 服务错误“已超出传入消息的最大消息大小配额”

问题描述

我有一个 WCF 服务库项目,它从数据库中请求一个大型记录集并返回它。每次在 WCF 测试客户端中都会弹出此错误。我将 MaxReceivedMessageSize 更改为一个很大的值,但它似乎没有接受它。这里是 Web.Config

 <client>
  <endpoint address="http://localhost:8000/SAPIntranet" binding="basicHttpBinding"
    bindingConfiguration="Binding_SAPIntranet" contract="SAPIntranet"
    name="SAPIntranet" kind="" endpointConfiguration="" />
</client>
<bindings>
  <basicHttpBinding>
    <binding name="Binding_SAPIntranet" openTimeout="00:02:00" maxBufferPoolSize="20000000"
      maxBufferSize="20000000" maxReceivedMessageSize="20000000">
      <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
    </binding>
  </basicHttpBinding>
</bindings>

错误消息始终提供默认值 (65535)。我想我做错了什么,但无法弄清楚。

感谢您的时间和帮助

标签: vb.netweb-serviceswcfwcf-binding

解决方案


MaxReceivedMessageSize设置在服务器端生效,我们应该在服务端点上应用绑定配置。上述配置仅适用于客户端服务端点。请参考以下服务配置。

  <services>
    <service name="WcfService1.Service1">
      <endpoint address="" binding="basicHttpBinding" bindingConfiguration="mybinding" contract="WcfService1.IService1">
      </endpoint>
      <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"></endpoint>
    </service>
  </services>
  <bindings>
    <basicHttpBinding>
      <binding name="mybinding" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647">
        <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
          maxArrayLength="2147483647" maxBytesPerRead="2147483647" />
      </binding>
    </basicHttpBinding>
  </bindings>

如果有什么我可以帮忙的,请随时告诉我。


推荐阅读