使用WCF使用SOAP:将回复正文作为原始XML接收

时间:2013-01-03 17:27:26

标签: .net wcf soap

我正在使用提供的WSDL文件为第三方SOAP服务编写客户端。使用WCF执行此操作的默认方法是使用svcutil生成本地代理类,并让WCF自动将对服务调用的响应反序列化为代理对象。

然而 - 因为我已经建立了适用于我的目的的适用于XML和XPath的代码,所以我不会使用代理对象,而只是以原始形式接收主体而不必重新序列化他们。另一方面,我不希望自己编写SOAP请求的麻烦,并希望WCF继续处理它。

我知道svcutil的/ importXmlTypes标志几乎可以让我只使用顶级回复对象,其中包含一个XmlNode数组,但最好是我希望

XmlDocument SomeServiceMethod(...)

这样的事情可能吗?

1 个答案:

答案 0 :(得分:0)

嗯,你可以这样做,但它并不是很好。您可以创建一个消息检查器并将其附加到您的代理(使用IClientMessageInspector)。示例:here。 所以你可以用它的裸形截取回复,但是在响应到达代理时仍然会发生反序列化。

然而,想想这将如何运作。您拥有可以完成此任务的代理,但是您可以解决此用于手动解析的回复(响应)。

另外,请考虑更新/更改服务时会发生什么。您必须更改解析代码,而不是仅更新代理,然后使用更新的合同。

无论如何,here's有关自定义WCF行为的额外阅读。