考虑一个 .NET 客户端调用定义为 Web 引用的远程 XML SOAP Web 服务。客户端调用服务,并尝试将返回的 XML 反序列化为对象。
Web 方法正在正确执行,并且从服务返回的 XML 格式正确,在 Fiddler 中得到确认。Web 服务是一种已知的良好工作服务,因为我们有另一个客户端 (.NET 2.0) 毫无问题地使用它。
当 .NET Web 服务代理类尝试反序列化返回的 XML 时,会引发以下错误:
System.InvalidOperationException:XML 文档中存在错误 (1, 1999)。---> System.Xml.XmlException: 'EndElement' 是无效的 XmlNodeType。第 1 行,位置 1999。在 System.Xml.XmlReader.ReadStartElement()
在 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader_PRPA_AR101202_Service.Read135_MCCI_MT000200LocatedEntity(Boolean isNullable, Boolean checkType)
它抱怨的XML 响应的行/列 (1,1999)是/
in </device>
:
<sender>
<device>
..snip..
<location classCode="IDENT" realmCode="xyz" />
</device>
如何使用 .NET 反序列化解决此问题?
没有解决方案/更多信息的尝试解决方案:
- 从 .NET 4 迁移到 4.5,希望在最新版本中看到任何修复
System.Xml
- 被反序列化的去标识化响应文档
- 完整的堆栈跟踪