使用WCF从数据库中获取数据

时间:2012-02-13 07:50:28

标签: wcf

我调用了WCF服务并尝试从Windows 7中的数据库中获取数据。 我收到了这个错误。

  

为操作反序列化回复消息正文时出错   'GetProductXml'。最大字符串内容长度配额(8192)具有   读取XML数据时已被超出。这个配额可能会增加   更改了MaxStringContentLength属性   创建XML阅读器时使用的XmlDictionaryReaderQuotas对象。   第13行,第197位。

我尝试在WCF服务的网络配置中将MaxStringContentLength属性更改为2147483647,但我得到了相同的上述错误....

2 个答案:

答案 0 :(得分:2)

您需要在Windows 7应用程序中添加服务引用时创建的client.config文件中更改它。

答案 1 :(得分:0)

您可以通过在WCF服务web.config中以及客户端web.config中添加以下设置来解决此错误:

<basichttpBinding>
    <binding>
        <readerQuotas maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxDepth="64" maxNameTableCharCount="2147483647" />
    </binding>
</basichttpBinding>

注意:假设您正在使用BasicHttpBinding。如果使用不同的绑定,请确保为该绑定添加readerQuotas。

如果您通过代码托管WCF服务,然后您想通过代码添加阅读器配额,请参阅以下内容:

var binding = new BasicHttpBinding();
var myReaderQuotas = new XmlDictionaryReaderQuotas();
myReaderQuotas.MaxStringContentLength = 5242880;
binding.GetType().GetProperty("ReaderQuotas").SetValue(binding, myReaderQuotas, null);