【发布时间】:2015-08-26 22:41:02
【问题描述】:
我目前正在使用ClientBase 访问网络服务。这可以正常工作,但我需要记录发送到服务的 XML 请求。
我可以看到使用侦听器和其他类似方法可以做到这一点,但我需要在我的代码库中提交它的方法中访问这个 XML 请求。
有什么方法可以支持吗?
【问题讨论】:
我目前正在使用ClientBase 访问网络服务。这可以正常工作,但我需要记录发送到服务的 XML 请求。
我可以看到使用侦听器和其他类似方法可以做到这一点,但我需要在我的代码库中提交它的方法中访问这个 XML 请求。
有什么方法可以支持吗?
【问题讨论】:
“XML”只有在控制流离开您的方法并进入实际执行调用的 WCF 代码后才会创建(序列化)。因此,如果您理论上能够从代码中获取它,那么您必须在实际调用“之后”获取它。这也是为什么要这样做的原因是implement/register a IClientMessageInspector。
唯一的另一件事是使用 NetDataContractSerializer 或 DataContractSerializer 手动序列化传递给 WCF 调用的参数,其中包括一些不必要的手工劳动。请注意,尽管这只会为您提供有效负载,而不是完整的消息(包括标头等)。
我真的会选择为此建议的方式(请参阅上面的链接)。
【讨论】:
你可以尝试一些 AOP 编程。如果您将 Unity 用于 DI,您可以尝试 Unity with Interception 或 Interception 单独使用 Intercept 类。
【讨论】: