2009-10-16 61 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>节点中拥有一些东西 - 是否也引用了相同的绑定配置?

马克