命名管道配额问题

时间:2009-10-16 10:07:09

标签: c# .net wcf

我在使用命名管道绑定

的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跟踪文件中的错误。

我想到了下一步的想法,所以有其他人遇到过相同或类似的问题吗?

3 个答案:

答案 0 :(得分:1)

客户端配置(或多或少)相同,但是糟糕的事情是行不通的。 但是,在我使用WCF配置编辑器打开服务器.config后,没有做任何更改并保存,它神奇地开始工作,所以我的猜测是我在文件中有某种标签混淆。

很抱歉打扰你。

答案 1 :(得分:0)

您可能有两个配置文件:一个来自服务实现,另一个来自客户端应用程序;你能发布两种配置吗?

此外,请阅读这篇文章:Making Sense of Transport Quotas

答案 2 :(得分:0)

好的,您已经使用<services>节点发布了服务器端配置 - 看起来不错。 客户端配置怎么样?你也必须在<client>节点中有一些东西 - 它是否也引用了相同的绑定配置?

马克