将较大的对象发送到WCF会导致400 Bad Request

时间:2011-09-23 04:20:10

标签: wcf-binding

我有一个单元测试,它将一个中等大的对象发送到WCF服务。如果我为该参数传递null,一切正常。当我发送一个填充的对象时,我得到一个HTTP 400响应。

WCF跟踪显示此错误:

  

传入邮件的最大邮件大小限额(65536)   超出。

但是,我已经在app.config中为单元测试项目调整了大小配置参数,如下所示:

<basicHttpBinding>
    <binding name="BasicHttpBinding_IMyAppService" closeTimeout="00:01:00"
        openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
        allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
        maxBufferSize="200000000" maxBufferPoolSize="200000000" maxReceivedMessageSize="200000000"
        messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
        useDefaultWebProxy="true">
      <readerQuotas maxDepth="32" maxArrayLength="200000000" maxStringContentLength="200000000"/>
        <security mode="None">
            <transport clientCredentialType="None" proxyCredentialType="None"
                realm="" />
            <message clientCredentialType="UserName" algorithmSuite="Default" />
        </security>
    </binding>
</basicHttpBinding>

我的配置中缺少什么来将允许的邮件大小提高到错误邮件中看到的65536以上?

更新:

Web服务主机的web.config文件还将maxReceivedMessageSize设置为一个较大的值(我认为):

<binding name="basicHttpBindingConfig" maxReceivedMessageSize="20000000" maxBufferSize="20000000" maxBufferPoolSize="20000000">
  <readerQuotas maxDepth="32" maxArrayLength="200000000" maxStringContentLength="200000000"/>
  <security mode="TransportCredentialOnly">
    <transport clientCredentialType="Ntlm"/>
  </security>
</binding>

1 个答案:

答案 0 :(得分:1)

如果我理解你的问题,你在单元测试的app.config中增加了'maxReceivedMessageSize'的大小。实际上,您应该在您从单元测试代码调用的Web服务的app.config / web.config中进行此更改。如果您在IIS中托管Web服务,那么它将是web.config。如果您在Windows服务中托管它,那么您需要在app.config中进行更改(它将被移动到bin文件夹中的.exe.config文件。