记录服务SOAP请求和响应

时间:2011-08-24 08:22:10

标签: c# wcf web-services logging soap

我正在尝试在C#中记录服务的soap请求和响应消息。我有一个现成的肥皂扩展,可以完成所有这些,但是我无法将其添加到服务方法中。

由于我的VS项目中添加了服务引用而不是Web服务引用,因此当我检查此服务的引用文件时,我看不到调用远程服务的方法。我看到的所有示例都是添加到Web服务,它具有不同的参考格式。

在这种情况下如何记录soap消息?

2 个答案:

答案 0 :(得分:13)

Soap扩展仅适用于使用基于ASMX的服务或客户端=添加Web引用。使用添加服务引用后,您将使用WCF客户端API,而不能使用Soap扩展。您必须创建message inspector instead

如果您只需要将消息记录用于调试目的,则可以使用内置的WCF message logging

答案 1 :(得分:2)

还有另一种查看XML SOAP的方法-custom MessageEncoder。与IDispatchMessageInspector / IClientMessageInspector的主要区别在于它可以在较低级别上工作,因此它可以捕获原始字节内容,包括格式错误的xml。

为了使用此方法实现跟踪,您需要将标准textMessageEncoding包装为custom message encoder作为新的binding element,并将该自定义绑定应用于config中的端点。

此外,您还可以看到我在项目中的工作方式示例- wrapping textMessageEncoding,日志记录encoder,自定义绑定elementconfig