我有一个Web服务代理。在该代理上有一个方法,它采用两种自定义类型。当我调用Web服务时,会生成一条soap消息。
在我的场景中,我手动捕获该肥皂消息(使用fiddler)。我希望能够将包含此soap消息的字符串(我从手动创建的文件中读取)反序列化为我的两种原始类型的实例。
我知道这对于这两种类型的Xml DOM,XPath和Xml序列化很容易。我已经这样做了,虽然目前有两个单独的文件。我想将它们组合起来,并且希望避免手动格式化捕获的Soap消息。
是否有更自动的方式利用现有的Soap基础设施来进行反序列化?我想编写一次序列化代码,并希望它能够正常工作。
答案 0 :(得分:1)
似乎.Net框架不会以易于使用的方式公开它。写入/读取数据的自定义代码(在SoapHttpClientProtocol
和SoapServerProtocol
中)不会直接向用户公开。
您可以使用此代码至少使请求的内容正确映射:
XmlTypeMapping xmlTypeMapping = new SoapReflectionImporter()
.ImportTypeMapping(typeof(T));
var xmlSerializer = new XmlSerializer(xmlTypeMapping);
您必须自己完成序列化/反序列化的其余部分(通过使用自定义代码编写SOAP标头和正文,并分别在您的内容前面跳过XML阅读器)。
您也可以尝试使用SoapFormatter
,虽然它已被弃用,并且在很多场景(包括泛型)中都很糟糕: