代码之家  ›  专栏  ›  技术社区  ›  JL. Hans Passant

wcf maxReceivedMessageSize:超过最大邮件大小配额

wcf
  •  11
  • JL. Hans Passant  · 技术社区  · 15 年前

    我得到这个错误:

    传入消息(65536)的最大消息大小配额为 超过。要增加配额,请使用MaxReceivedMessageSize 属性。

    如何在WCF客户机应用程序或服务器应用程序中增加此值,如果可能,还可以提供一个如何完成此操作的示例?

    3 回复  |  直到 9 年前
        1
  •  19
  •   Darin Dimitrov    15 年前

    在app/web.config中的客户端增加:

    <system.serviceModel>
        <bindings>
            <basicHttpBinding>
                <binding name="WSBigQuotaConfig" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="2097152" maxBufferPoolSize="524288" maxReceivedMessageSize="2097152" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
                    <readerQuotas maxDepth="32" maxStringContentLength="2097152" maxArrayLength="2097152" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
                    <security mode="None">
                        <transport clientCredentialType="None" proxyCredentialType="None" realm=""/>
                        <message clientCredentialType="UserName" algorithmSuite="Default"/>
                    </security>
                </binding>
          </basicHttpBinding>
      </bindings>
    
      <client>
          <endpoint 
              address="http://example.com/endpoint.svc"
              binding="basicHttpBinding"
              bindingConfiguration="WSBigQuotaConfig"
              contract="ISomeServiceContract" />
      </client>
    </system.serviceModel>
    
        2
  •  3
  •   Ed Altorfer    15 年前

    您需要在绑定配置中设置maxReceivedMessageSize属性。默认为65536。我假设您使用的是数据集或类似的东西,结果非常大(主要是因为它们通常用XML表示)。

    好消息是,我认为您只需要在客户机配置中更改它。看看下面。

    <bindings>
       <netTcpBinding>
          <binding name="MyTcpBinding"
                   maxReceivedMessageSize="2000000"/>
       </netTcpBinding>
    <bindings>
    
        3
  •  1
  •   Hemant Soni    13 年前

    <bindings>
      <wsHttpBinding>
        <binding name="wsHttpBinding_Username" maxReceivedMessageSize="20000000"          maxBufferPoolSize="20000000">
          <security mode="TransportWithMessageCredential">
            <message clientCredentialType="UserName" establishSecurityContext="false"/>
          </security>
        </binding>
      </wsHttpBinding>
    </bindings>
    
    <client>
      <endpoint
                binding="wsHttpBinding"
                bindingConfiguration="wsHttpBinding_Username"
                contract="Exchange.Exweb.ExchangeServices.ExchangeServicesGenericProxy.ExchangeServicesType"
                name="ServicesFacadeEndpoint" />
    </client>