2011-11-23 97 views
4

我有一個WCF服務操作,它接受一個字節數組作爲其數據協定的一部分。該服務只暴露在內部(而不是互聯網),我想增加配額以允許10MB的字節數組。在IIS 7中託管的WCF服務 - 綁定配置設置被忽略

該服務託管在IIS7中。當我嘗試過的默認長度發送一個字節數組,我得到下面的異常消息:

有反序列化類型 MyService.ServiceContracts.Data的對象錯誤。在讀取XML數據時,超出了最大陣列長度配額 (16384)。通過更改在創建XML閱讀器時使用的 XmlDictionaryReaderQuotas對象上的MaxArrayLength屬性,可以增加此配額 。 1號線,位置22991.

這裏的配置:

<system.serviceModel> 
    <netTcpBinding> 
     <binding name="largeBinaryBinding" maxReceivedMessageSize="10001000" 
       maxBufferPoolSize="80008000" maxBufferSize="10001000" 
       receiveTimeout="00:01:00" openTimeout="00:01:00" 
       closeTimeout="00:01:00" sendTimeout="00:01:00"> 
      <readerQuotas maxArrayLength="10000000" /> 
     </binding> 
    </netTcpBinding> 

    <services> 
     <service name="MyService"> 
      <endpoint binding="netTcpBinding" 
         bindingConfiguration="largeBinaryBinding" 
         bindingNamespace="http://my.services.co.uk/MyService" 
         contract="Services.MyService.ServiceContracts.IMyService" /> 
     </service> 
    </services> 
</system.serviceModel> 

所以我的配置允許更大的消息,但IIS似乎忽略這一點 - 我該如何制止這種和允許通過較大的消息?

回答

9

再次,我發佈一個問題後,我發現答案!

使用WAS時,需要在配置的服務名稱中指定服務的完整類名稱。所以在我的例子中,我的服務實現類名爲MyService,名稱空間Services。因此,在配置中,我需要

<service name="Services.MyService"> 
    ... 

否則IIS默默地忽略您精心設計的配置!多麼方便。