在 WebService 调用中出现字符串序列化错误

14
今天早上我遇到了一个问题,就是从Web服务调用返回文本字符串结果时发生了错误。我收到的错误如下所示。

This morning I ran into an issue with returning back a text string as result from a Web Service call. the Error I was getting is below


************** Exception Text **************
System.ServiceModel.CommunicationException: Error in deserializing body of reply message for operation 'GetFilingTreeXML'. ---> System.InvalidOperationException: There is an error in XML document (1, 9201). ---> System.Xml.XmlException: The maximum string content length quota (8192) has been exceeded while reading XML data. This quota may be increased by changing the MaxStringContentLength property on the XmlDictionaryReaderQuotas object used when creating the XML reader. Line 1, position 9201.
at System.Xml.XmlExceptionHelper.ThrowXmlException(XmlDictionaryReader reader, String res, String arg1, String arg2, String arg3)
at System.Xml.XmlExceptionHelper.ThrowMaxStringContentLengthExceeded(XmlDictionaryReader reader, Int32 maxStringContentLength)
at System.Xml.XmlDictionaryReader.ReadString(Int32 maxStringContentLength)
at System.Xml.XmlDictionaryReader.ReadString()
at System.Xml.XmlBaseReader.ReadElementString()
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderImageServerClientInterfaceSoap.Read10_GetFilingTreeXMLResponse()
at Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer9.Deserialize(XmlSerializationReader reader)
at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
--- End of inner exception stack trace ---
at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle)
at System.ServiceModel.Dispatcher.XmlSerializerOperationFormatter.DeserializeBody(XmlDictionaryReader reader, MessageVersion version, XmlSerializer serializer, MessagePartDescription returnPart, MessagePartDescriptionCollection bodyParts, Object[] parameters, Boolean isRequest)
--- End of inner exception stack trace ---

我进行了搜索,结果如下: 搜索结果

大部分与WCF相关,但足以指导我正确方向。我将在回复中发布答案。


抱歉问一个显而易见的问题:您能检查一下从 Web 服务返回的字符串是否超过了 8192 字节吗? - Espo
是的,这个过程比较长,我需要按照博客文章中提到的更新配置文件的方法来解决问题。非常感谢您的回复。 - MikeScott8
关于你的标记;情况比那更加复杂。请在[元数据]上提问。 - user1228
2个回答

29

尝试阅读这篇博客文章这里。您可以在绑定配置中修改MaxStringContentLength属性。


是的,那就是解决方案。我不得不更新配置文件,正如链接的博客文章中所提到的那样,然后问题就解决了。谢谢回复。 - MikeScott8
3
为了更清晰地说明,读者配额设置必须在应用程序配置文件或Web配置文件中进行,针对将接收大字符串的通信一侧。也就是说,我需要从客户端应用程序向我的服务端点发送大量数据,因此我必须在服务的web.config文件中进行更改。将大量数据从服务返回到客户端应用程序需要更改客户端的app.config文件。希望这能帮助其他人。 - kirps

6

Jow Wirtley的博客文章指引我朝着正确的方向前进。

我所需要做的就是更新客户端应用程序的app.config中的绑定,现在一切都正常工作了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接