超过 (65536) 时如何增加 WCF 服务的传入消息的最大消息大小配额

Posted

技术标签:

【中文标题】超过 (65536) 时如何增加 WCF 服务的传入消息的最大消息大小配额【英文标题】:How to increase maximum message size quota for incoming messages for a WCF service when (65536) has been exceeded 【发布时间】:2014-06-24 08:10:51 【问题描述】:

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

配置文件详细信息。

<services>
  <service behaviorConfiguration="WCFServiceBehavior"
           name="GenServiceLibrary.IFileUploadService">
    <endpoint address="FileUploadService.svc" binding="basicHttpBinding"
              behaviorConfiguration="CoreServiceBehavior"
              bindingConfiguration="WCFServiceBinding" 
              contract="GenServiceLibrary.IFileUploadService"/>
    <endpoint address="mex" binding="mexHttpsBinding" 
              contract="IMetadataExchange"/>
  </service>
  <service behaviorConfiguration="WCFServiceBehavior"
           name="GenServiceLibrary.Service.svc">
    <endpoint address="Service.svc" binding="basicHttpBinding"
              behaviorConfiguration="CoreServiceBehavior"
              bindingConfiguration="WCFServiceBinding"
              contract="GenServiceLibrary.ICommonService"/>
    <endpoint address="mex" binding="mexHttpsBinding" 
              contract="IMetadataExchange"/>
  </service>
</services>
<bindings>
  <basicHttpBinding>
    <binding name="WCFServiceBinding" maxBufferPoolSize="1024000"
             maxBufferSize="1024000" maxReceivedMessageSize="1024000">
      <readerQuotas maxDepth="1024000" maxStringContentLength="1024000"
                    maxArrayLength="1024000" maxBytesPerRead="1024000"
                    maxNameTableCharCount="1024000" />
    </binding>
  </basicHttpBinding>
</bindings>
<behaviors>
  <serviceBehaviors>
    <behavior name="WCFServiceBehavior">
      <serviceMetadata httpsGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="true" />
    </behavior>
  </serviceBehaviors>
  <endpointBehaviors>
    <behavior name="CoreServiceBehavior">
      <webHttp />
    </behavior>
  </endpointBehaviors>
</behaviors>

【问题讨论】:

【参考方案1】:

很难从您发布的内容中看出您的问题到底是什么。

为了使用 WCF 传输大型消息,您需要确保在客户端和服务器配置文件中增加消息配额值以解决该问题。否则,分辨率相对简单,只需将配置调整为更高的值即可。

例如:

<binding name="DefaultBasicHttpBinding" maxBufferPoolSize="1024000" maxBufferSize="1024000" maxReceivedMessageSize="1024000">
  <readerQuotas maxDepth="1024000" maxStringContentLength="1024000" maxArrayLength="1024000" maxBytesPerRead="1024000" maxNameTableCharCount="1024000" />
</binding>

【讨论】:

客户端和服务器配置中的值是否都增加了? 感谢 Seymour.yes,但是当我仅在服务器内部使用服务时会发生这种情况。

以上是关于超过 (65536) 时如何增加 WCF 服务的传入消息的最大消息大小配额的主要内容,如果未能解决你的问题,请参考以下文章

WCF:如何设置 MaxReceivedMessageSize 配额

WebService 之 已超过传入消息(65536)的最大消息大小配额。若要增加配额,请使用相应绑定元素上的 MaxReceivedMessageSize 属性。

WCF MaxReceivedMessageSize:超出最大邮件大小配额

从 C# 调用 WCF 时如何增加 MaxReceivedMessageSize [重复]

文件上传 WCF WEB API(预览版 6)出错:无法向缓冲区写入超过配置的最大缓冲区大小的字节数:65536

WCF 已超过传入消息(65536)的最大消息大小配额 解决方案