已超出传入邮件的最大邮件大小配额 (65536)

Posted

技术标签:

【中文标题】已超出传入邮件的最大邮件大小配额 (65536)【英文标题】:The maximum message size quota for incoming messages (65536) has been exceeded 【发布时间】:2011-11-06 03:16:58 【问题描述】:

我对 WCF 服务有以下配置。

即使我增加了 maxReceivedMessageSize ,服务仍然会抛出错误:

。要增加配额,请在适当的绑定元素上使用 MaxReceivedMessageSize 属性。`" 例外。

如何解决?

  <system.serviceModel>
    <services>
      <service name="MyService" behaviorConfiguration="MyServiceTypeBehaviors">
        <endpoint address="http://localhost:22230/MyService.svc"
              binding="basicHttpBinding"
              bindingConfiguration="MyServiceBinding"
              contract="IMyService" />

        <endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" />
      </service>
    </services>

    <behaviors>
      <serviceBehaviors>
        <behavior name="MyServiceTypeBehaviors" >
          <serviceMetadata httpGetEnabled="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>

    <bindings>
      <basicHttpBinding>
        <binding name="MyServiceBinding"
               hostNameComparisonMode="StrongWildcard"
               receiveTimeout="00:10:00"
               sendTimeout="00:10:00"
               openTimeout="00:10:00"
               closeTimeout="00:10:00"
               maxReceivedMessageSize="6553600"
               maxBufferSize="6553600"
               maxBufferPoolSize="524288"
               transferMode="Buffered"
               messageEncoding="Text"
               textEncoding="utf-8"
               bypassProxyOnLocal="false"
               useDefaultWebProxy="true" >
          <security mode="None" />
        </binding>
      </basicHttpBinding>
    </bindings>
  </system.serviceModel

【问题讨论】:

我的理论是您的客户端配置未正确配置。 所以你说,这是正确的,应该有效吗?我的客户现在是 WCFTestClient。 this thread 中有一些想法,其中一些不适用(例如,您已经增加了 maxBufferSize),但可能值得更仔细地研究。 【参考方案1】:

如果这是服务配置,您应该查看客户端配置并将 maxReceivedMessageSize 与服务器消息大小相匹配。消息来自您的客户。

【讨论】:

那么您必须更改 WCFTestClient 的配置(转到工具和选项)或向 WCFTestClient 发送更少的数据。 要更改 wcf 测试客户端的配置(在我的情况下为 FW 4.0),您应该右键单击左侧文件树列表中最低文件的配置。选择“使用 SvcConfigEditor 编辑”,然后选择 Binding 。在里面的绑定元素中找到这里标记的 3 个家伙。将其设置为 2MB 作为一个合理的大小。 i.imgur.com/eBdguoy.png【参考方案2】:

您需要在客户端配置中增加最大消息大小。默认为 65536,加倍可能就足够满足您的需求了。

如果您以编程方式配置端点,以下代码 sn-p 可能会有所帮助:

BasicHttpBinding binding = new BasicHttpBinding()  MaxReceivedMessageSize = 131072 ;

然后,在实例化您的服务客户端时,将此绑定对象传递给构造函数。例如:

MyServiceClient client = new MyServiceClient(binding, "http://www.mysite.com/MyService/");

【讨论】:

【参考方案3】:

确保复制新的 App.config

【讨论】:

以上是关于已超出传入邮件的最大邮件大小配额 (65536)的主要内容,如果未能解决你的问题,请参考以下文章

WCF,已超出传入邮件的最大邮件大小配额 (65536)

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

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

WCF 中的 MaxReceivedMessageSize 错误

WCF 服务 400 错误请求

WCF:如何设置 MaxReceivedMessageSize 配额