c# – HTTP 413请求实体在自托管WCF服务中太大

我有一个自托管WCF服务通过HTTPS接受消息.

正在从Java应用程序发送消息,该应用程序接收响应:

HTTP/1.1 413 Request Entity Too Large
Content-Length: 0
Server: Microsoft-HTTPAPI/2.0
Date: Wed, 19 Sep 2012 09:05:34 GMT
Connection: close

我不是试图上传文件,只是发送一个78kb的XML / SOAP消息.我试过提高我的最大消息和缓冲区大小,但无济于事.

  <binding name="SecuredNoProxy" openTimeout="00:00:10" sendTimeout="00:00:10">
      <textMessageEncoding messageVersion="Soap11WSAddressing10" />
      <security includeTimestamp="true" enableUnsecuredResponse="true">
          <localClientSettings timestampValidityDuration="00:15:00" />
      </security>
      <httpsTransport manualAddressing="false" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" allowCookies="false" bypassProxyOnLocal="true" decompressionEnabled="true" hostNameComparisonMode="StrongWildcard" keepAliveEnabled="true" realm="" transferMode="Buffered" unsafeConnectionNtlmAuthentication="false" useDefaultWebProxy="false" requireClientCertificate="true" />
  </binding>

如果我能提供任何其他信息,请告诉我.

WCF跟踪日志

Receive bytes on connection ‘https://localhost’

Activity boundary (Start)

Connection information

Throwing an exception (Error)

例外是:

System.ServiceModel.ProtocolException, System.ServiceModel, Version=4.0.0.0, Culture=neutral

最佳答案
正如我在问题中所提到的,这与绑定配置非常相关.特别是maxReceivedMessageSize.

maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647"

这是正确的改变领域(可能不会让事情变得如此之大,因为它会让您容易受到拒绝服务攻击).根据您的实际消息确定合理的值.

出站端点已正确配置但入站端点未正确配置 – 它是:

<httpsTransport requireClientCertificate="true" />

这意味着它使用的默认值为65536,这对于发送的消息是不够的.因此,实际上是非常谨慎地检查端点的情况,特别是如果它们具有相似的名称.

转载注明原文:c# – HTTP 413请求实体在自托管WCF服务中太大 - 代码日志