记录服务SOAP请求和响应

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

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

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

Soap扩展仅适用于使用基于ASMX的服务或客户端=添加Web引用。 使用添加服务引用后,您将使用WCF客户端API,而不能使用Soap扩展。 您必须改为创建消息检查器 。

如果仅需要用于调试目的的消息记录,则可以使用内置的WCF消息记录 。

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

为了使用此方法实现跟踪,您需要将标准textMessageEncoding与自定义消息编码器包装为新绑定元素,并将该自定义绑定应用于配置中的端点。

你也可以看看我在项目中是如何做到的 – 包装 textMessageEncoding,记录编码器 ,自定义绑定元素和配置 。