2014-09-26 51 views
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場中的節點後,不再顯示此行爲。這並不能讓我充滿信心,因爲如果再次發生,我不知道如何解決它。我很歡迎答案可以表明爲什麼這可能是這樣的...

+0

這個老問題可能會提供一些提示:http://stackoverflow.com/questions/10122957/iis7-413-request-entity-too-large-uploadreadaheadsize – xpa1492 2014-09-29 06:41:47

回答

0

我會檢查IIS管理器,看看設置是不同的,但也許你可以設置明確的請求長度值在你的web.config,一些更多信息here