获取" 413请求实体太大"与WCF服务交谈时

时间:2015-11-04 16:31:43

标签: c# wcf

我有一个WCF服务Server,它接受​​来自控制台应用程序Client的请求。发送数据(相对较大)时,我得到以下异常:

System.ServiceModel.ProtocolException: The remote server returned an unexpected response: (413) Request Entity Too Large. ---> System.Net.WebException: The remote server returned an error: (413) Request Entity Too Large.

我以为我在配置文件中设置了正确的限制,但显然我错了?

以下是Server app.config的相关部分:

<system.serviceModel>

<services>
  <service name="Services.Server">
    <endpoint bindingConfiguration="LargeWeb" binding="webHttpBinding" contract="Interfaces.IServer" />
  </service>
</services>

<bindings>
  <webHttpBinding>
    <binding name="LargeWeb" maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647">
      <readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
    </binding>
  </webHttpBinding>
</bindings>

</system.serviceModel>

这里Client&#39; app.config

<system.serviceModel>

<client>
  <endpoint name="serverEndpoint" binding="webHttpBinding" bindingConfiguration="LargeWeb" contract="Interfaces.IServer" />
</client>

<bindings>
  <webHttpBinding>
    <binding name="LargeWeb" maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647">
      <readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
    </binding>
  </webHttpBinding>
</bindings>

</system.serviceModel>

最后,这是Client调用Server方法的方式:

using (var cf = new WebChannelFactory<IServer>("serverEndpoint", serverAddress))
{
    var channel = cf.CreateChannel();
    channel.SomeMethod(some, arguments);
}

我做错了什么?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

问题是Client驻留在UnitTest项目中,并且在运行单元测试时出现问题。运行单元测试时,只考虑UnitTest项目的配置文件,因此<service>配置的Server部分需要复制到其中。

这样,只使用了一个配置文件:ServerClient都会读取它们的配置。

之后,情况正常。