考虑将.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 response的行/列(1,1999)是/
中的</device>
:
<sender>
<device>
..snip..
<location classCode="IDENT" realmCode="xyz" />
</device>
如何使用.NET反序列化解决此问题?
尝试无解决方案/更多信息的解决方案:
System.Xml
答案 0 :(得分:0)
堆栈跟踪的第二行表明xml处理器期望第二个locatedEntity
元素中的元素device
。可以推断出没有这样的元素的最早位置是所述device
元素的结束标记。
查看名称空间"urn:hl7-org:v3"
的架构文档;可能location
被错误地使用而不是locatedEntity
?
答案 1 :(得分:0)
我使用.config调整来强制XML序列化程序使用遗留行为:
<configuration>
<system.xml.serialization>
<xmlSerializer useLegacySerializerGeneration="true" />
</system.xml.serialization>
</configuration>
Serialization or deserialization failures when you run existing XML serialization code in WCF 4.5