2011-11-23 66 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默默地忽略您精心设计的配置!多么方便。