system.serviceModel配置对IIS 7.5中承载的WCF服务没有影响

时间:2013-07-16 13:22:23

标签: .net wcf iis-7.5


在IIS 7.5(W2008)中托管WCF服务时,我们有时会在客户端上收到错误消息:

“格式化程序在尝试反序列化消息时抛出异常:尝试反序列化参数http://tempuri.org/:defaultText时出错.InstallException消息是'反序列化System.String类型的对象时出错。最大字符串内容读取XML数据时已超过长度配额(8192)。可以通过更改创建XML阅读器时使用的XmlDictionaryReaderQuotas对象的MaxStringContentLength属性来增加此配额。第148行,位置106.'。有关详细信息,请参阅InnerException。

因此,我们更改了服务器上web.config中basicHttpBinding的readerQuotas元素的MaxStringContentLength属性。但显然该服务忽略了system.serviceModel部分中的所有内容!如果system.serviceModel部分是删除,IIS仍然提供默认的basicHttpBinding。

我发现了更多关于这个问题的文章,例如: http://social.msdn.microsoft.com/Forums/vstudio/en-US/2f990dec-79f5-4943-b238-44f0321148c3/changes-to-services-bindings-have-no-effect-wcf-iis-7-vs2010-net-401

但我不明白答案。有谁知道如何让IIS / WCF收听web.config?

提前多多感谢!

2 个答案:

答案 0 :(得分:0)

我知道除非您的应用程序池在“集成”托管管道模式下运行,否则将忽略web.config的某些部分...

答案 1 :(得分:0)

我通过创建“未命名”绑定来解决它:

在.NET 4中,配置已经大大简化了。例如,如果您创建一个没有name属性的绑定标记,它将应用于所有相同类型的绑定:

<binding someConfig="someValue"/>

您还可以使用协议映射来配置用于特定方案的默认绑定。例如:

<add scheme="http" binding="webHttpBinding"/>