在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?
提前多多感谢!
答案 0 :(得分:0)
我知道除非您的应用程序池在“集成”托管管道模式下运行,否则将忽略web.config的某些部分...
答案 1 :(得分:0)
我通过创建“未命名”绑定来解决它:
在.NET 4中,配置已经大大简化了。例如,如果您创建一个没有name属性的绑定标记,它将应用于所有相同类型的绑定:
<binding someConfig="someValue"/>
您还可以使用协议映射来配置用于特定方案的默认绑定。例如:
<add scheme="http" binding="webHttpBinding"/>