报错信息:
读取 XML 数据时,超出最大字符串内容长度配额 (8192)。通过更改在创建 XML 读取器时所使用的 XmlDictionaryReaderQuotas 对象的 MaxStringContentLength 属性,可增加此配额
原因:
引用webservices后在app.config生成了配置,但没有MaxStringContentLength 属性,默认成了8192,当查询XML字符较长时,就会报此错,综合了网上的一些信息,要对自己环境的app.config中内容进行修改,不能直接复制网上代码,因为webservices名称不同
我原来的配置文件是:
<binding name="AdiconWebServiceSoap" closeTimeout="00:10:00"
openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00"
allowCookies="false" bypassProxyOnLocal="false" maxBufferPoolSize="524288"
maxReceivedMessageSize="2024000000" useDefaultWebProxy="true" />
需要修改成:注意“XXXXWebServiceSoap”是你自己的名称
<binding name="XXXXWebServiceSoap" closeTimeout="00:10:00"
openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00"
allowCookies="false" bypassProxyOnLocal="false" maxBufferPoolSize="524288"
useDefaultWebProxy="true" >
<readerQuotas maxStringContentLength="10485760" />
</binding>
其它完整的参数:
<binding name="XXXXWebServiceSoap" maxReceivedMessageSize="10485760">
<readerQuotas maxDepth="32" maxStringContentLength="10485760" maxArrayLength="10485760" maxBytesPerRead="10485760" maxNameTableCharCount="10485760"/>
</binding>
奇怪的问题是同样的代码配置,不同电脑,有的电脑没加这个参数运行也正常,可能和其它环境变量有关。
参考资料: