2

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

但是 - 由于我已经建立了可以很好地与 XML 和 XPath 配合使用的代码,因此我对使用代理对象并不感兴趣,我宁愿只接收原始形式的主体,而不必重新序列化它们。另一方面,我不希望自己编写 SOAP 请求的麻烦,并希望 WCF 继续处理它。

我知道 svcutil 的 /importXmlTypes 标志几乎可以让我到达那里,只有顶级回复对象,其中包含 XmlNode 数组,但最好是我想要

XmlDocument SomeServiceMethod(...)

这样的事情可能吗?

4

1 回答 1

0

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

但是,请考虑一下这将如何工作。您的代理已经可以完成这项工作,但您只能针对手动解析的回复(响应)解决此问题。

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

无论如何,这里有一些关于自定义 WCF 行为的额外阅读。

于 2013-01-03T17:40:22.763 回答