我正在使用轮询双工绑定在我的 Silverlight 客户端应用程序和我的 WCF Web 服务之间进行通信。我通过使用 xml 字符串参数从 Web 服务异步调用方法,将消息从 Silverlight Web 应用程序推送到 WCF Web 服务。一切正常,直到我尝试发送一个非常大的 xml 字符串。然后我收到消息:
“格式化程序在尝试反序列化消息时抛出异常:反序列化操作'SendUserSelection'的请求消息正文时出错。读取XML数据时已超出最大字符串内容长度配额(8192)。此配额可以通过更改来增加创建 XML 阅读器时使用的 XmlDictionaryReaderQuotas 对象的 MaxStringContentLength 属性。”
在这种情况下,通常要做的是增加 web.config 文件中绑定的 maxStringContentLength 属性。这里的问题是,当尝试将 readerQuotas 元素(包含 maxStringContentLength)添加到绑定时,根本没有考虑到它。我发现这是一个已知问题:http: //blogs.msdn.com/b/silverlightws/archive/2010/04/04/some-known-wcf-issues-in-silverlight-4.aspx。那里给出的解决方案是使用包含轮询双工元素的自定义绑定。我试过了,但不知何故我没有让它工作。
我的问题是这个问题还有其他解决方法还是这是唯一的解决方案?