可以跟踪.NET Web服务客户端发送的SOAP信封吗?

时间:2009-11-03 19:11:53

标签: c# .net soap web-services

我们开发的C#客户端应用程序调用第三方公司的外部SOAP Web服务。

现在,我想在我们的应用程序中跟踪由VS.NET生成的SOAP代理生成的确切SOAP请求包络,并转移到外部SOAP Web服务。

使用像Wireshark这样的网络监视器(如here所述)或使用Microsoft网络监视器的方法是没有选择的,因为externl SOAP Web服务只提供SSL / HTTPS URL,因此HTTP包的有效负载是加密的,不可见。

我的问题是:

是否有一种方法可以配置.NET内置的Web服务客户端类来输出/跟踪/记录正在生成/接收的基础HTTP请求和响应? (或者也许某种事件要订阅?)

3 个答案:

答案 0 :(得分:6)

如果您使用的是标准Web服务(而不是WFC),则可以按照此处的说明扩展SoapExtension类:

http://www.blog.encoresystems.net/articles/how-to-capture-soap-envelopes-when-consuming-a-web-service.aspx

如果你正在使用WFC,那么你可以实现IEndpointBehavior和IClientMessageBehavior,如下所述:

http://weblogs.asp.net/paolopia/archive/2007/08/23/writing-a-wcf-message-inspector.aspx

我使用两者,取决于我是使用网络还是服务引用。

答案 1 :(得分:3)

您可以使用fiddler作为代理,从而监控HTTP / HTTPS请求。这不需要您编写任何代码。

Fiddler Web Debugger

值得注意的是,使用Fiddler调试HTTPS请求时需要注意。本页介绍了如何完成。

Fiddler Web Debugger - Debugging HTTPS traffic with Fiddler2

答案 2 :(得分:3)