2012-09-19 133 views
8

我有一個自託管的WCF服務通過HTTPS接受消息。HTTP 413請求實體太大在自託管WCF服務

的消息正在從一個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 

我沒有嘗試上傳的文件,只需發送一個XML/SOAP消息,這是78KB。我已經嘗試加大我的最大消息和緩衝區大小,但無濟於事。

<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跟蹤日誌

接收關於連接字節的 'https:// localhost' 的

活動邊界(開始)

連接信息

拋出異常(錯誤)

唯一的例外是:

System.ServiceModel.ProtocolException,System.ServiceModel,版本= 4.0.0.0,文化=中性

+0

啓用[WCF跟蹤](http://msdn.microsoft.com/en-us/library/ms733025(V = VS.100) .aspx)來查看該消息是否由WCF處理。該消息看起來像來自HTTP主機組件,而不是WCF管道。 –

+0

@SixtoSaez - 我已經添加了WCF跟蹤日誌信息。 – Fenton

回答

6

正如我在逃避問題來,這是有很大關係到綁定配置。特別是,maxReceivedMessageSize。

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

這是改變(可能不把事情相當這麼大,雖然,因爲它會讓你可能會遭受拒絕服務攻擊),正確的區域。根據你的實際信息確定一個合理的價值。

的出站端點配置正確,但入站終點是不是 - 它是:

<httpsTransport requireClientCertificate="true" /> 

這就意味着它是使用的65536默認值,發送的消息,該消息是不夠的。所以真的很仔細地檢查端點的情況,尤其是如果它們被命名的話。

+1

Steve我知道你回答這個問題已經有一段時間了,但是你能否詳細說明你的出站端口和入站端點的含義?謝謝。 – antscode

+1

這一切都有點陰霾。感謝上天的輕量級REST服務,我有一段時間沒有看過這種東西。儘管如此,我的意思是「出站」=「服務」和「入站」=「呼叫者」(我想!) – Fenton

2

對我來說是的maxRequestLength下的System.Web:

<system.web> 
    <compilation debug="true" targetFramework="4.0" /> 
    <customErrors mode="Off"/> 
    <httpRuntime 
     maxRequestLength="2147483647" 
     executionTimeout="300" /> 
</system.web> 
相關問題