2
我的WCF服務拋出ProtocolException(403) - 請求實體太大。將文件(〜100KiB)推送到服務時會發生這種情況。WCF默認綁定配置設置在主機上不起作用
奇怪的是,這隻發生在託管(暫存)版本,而不是本地。我的客戶端配置爲:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="DefaultBindingConfiguration" closeTimeout="01:00:00" openTimeout="01:00:00" receiveTimeout="01:00:00" sendTimeout="01:00:00" maxBufferSize="1000000000" maxBufferPoolSize="1000000000" maxReceivedMessageSize="1000000000">
<readerQuotas maxDepth="1000000000" maxStringContentLength="1000000000" maxArrayLength="64000000" maxBytesPerRead="1000000000" maxNameTableCharCount="1000000000" />
<security mode="None" />
</binding>
</basicHttpBinding>
</bindings>
...
</system.serviceModel>
而我的服務器配置爲:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding maxBufferSize="1000000000" maxReceivedMessageSize="1000000000" maxBufferPoolSize="1000000000" sendTimeout="01:00:00" receiveTimeout="01:00:00">
<readerQuotas maxDepth="1000000000" maxStringContentLength="1000000000" maxArrayLength="1000000000" maxBytesPerRead="1000000000" />
<security mode="None"/>
</binding>
</basicHttpBinding>
</bindings>
...
</system.serviceModel>
我不再贅述了<behaviours>
部分。客戶端以編程方式創建端點,全部使用DefaultBindingConfiguration
。我可以確認服務器和客戶端綁定配置通過選擇性地將值減小到1
並且看到它失敗而在本地生效。
爲什麼託管服務器的行爲可能與我的本地服務器有所不同?顯着的差異:
- 當地操作系統:Windows 7,主機操作系統:Windows Server 2012
- 本地IIS:7,主機IIS 8(±0.5)
注:要預 - 如果「這些價值太高」和「不設置全球價值」,我意識到風險,所以不需要提醒。 :)
任何指針和建議,非常感謝。
更新:
此問題已經解決。重新啓動Web場中的節點後,不再顯示此行爲。這並不能讓我充滿信心,因爲如果再次發生,我不知道如何解決它。我很歡迎答案可以表明爲什麼這可能是這樣的...
這個老問題可能會提供一些提示:http://stackoverflow.com/questions/10122957/iis7-413-request-entity-too-large-uploadreadaheadsize – xpa1492 2014-09-29 06:41:47