2009-10-16 60 views
1

我有一個問題發送通過WCF它使用命名管道綁定命名管道配額問題

<netNamedPipeBinding> 
    <binding name="largeMessage" 
      maxBufferPoolSize="524288000" 
      maxReceivedMessageSize="655360000" 
      maxBufferSize="655360000" > 
     <readerQuotas maxStringContentLength="655360000" 
         maxArrayLength="2000001" 
         maxBytesPerRead="2000001" 
         maxNameTableCharCount="2000001" /> 
    </binding> 
</netNamedPipeBinding> 

文件大小啄,這是服務定義

<service name="BusinessService.TaskService" 
     behaviorConfiguration="BusinessService.TaskServiceBehavior"> 
    <endpoint 
     address="" 
     behaviorConfiguration="customEndPointBehavior" 
     binding="netNamedPipeBinding" 
     bindingConfiguration="largeMessage" 
     contract="BusinessServiceContracts.Services.ITaskService"> 
     <identity> 
     <dns value="localhost" /> 
     </identity> 
    </endpoint> 
    </service> 

可以看出,我已經爲所有配額設置了相當大的值,而且我仍然可以得到「傳入消息的最大消息大小配額(65536)已被超出。要增加配額,請使用MaxReceivedMessageSize屬性在適當的綁定元素上。「WCF跟蹤文件中的錯誤。

我剛剛從哪裏看下一個想法,所以有其他人遇到相同或類似的問題?

回答

1

客戶端配置爲(或多或少)相同,但混賬東西是做不到的。 但是,使用WCF配置編輯器打開服務器.config後,沒有做任何更改並保存,它奇蹟般地開始工作,所以我的猜測是我在文件中存在某種標籤混淆。

抱歉打擾你。

+0

剛剛撞到這。這可能是屬性的順序很重要嗎?那會是多麼愚蠢? – sq33G 2012-04-23 23:25:07

+0

@ sq33G它應該沒關係,但是使用WCF配置永遠無法確定。根據我對net.tcp和net.pipe綁定的個人經驗,對配置文件大喊大叫似乎有幫助。 – SWeko 2012-04-24 06:40:01

0

您可能有兩個配置文件:一個來自服務實現,另一個來自您的客戶端應用程序;你可以請張貼兩種配置嗎?

此外,請閱讀這篇文章:Making Sense of Transport Quotas

0

OK,你張貼的所有服務器端配置與<services>節點 - 看起來沒什麼問題。如何配置客戶端?您還必須在<client>節點中擁有一些東西 - 是否也引用了相同的綁定配置?

馬克