【问题标题】:Tracing the SOAP envelope that is being sent by a .NET web service client possible?可以跟踪 .NET Web 服务客户端发送的 SOAP 信封吗?
【发布时间】:2010-12-12 18:35:24
【问题描述】:

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

现在我想跟踪由 VS.NET 生成的 SOAP 代理在我们的应用程序中生成并传输到外部 SOAP Web 服务的确切 SOAP 请求信封。

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

我的问题是:

有没有办法配置 .NET 内置 Web 服务客户端类以输出/跟踪/记录其底层 HTTP 请求和正在生成/接收的响应? (或者可能是某种要订阅的事件?)

【问题讨论】:

  • tcpMon 可以做你想做的事。我用它来跟踪 jax-ws 网络服务。

标签: c# .net soap web-services


【解决方案1】:

如果您使用的是标准 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

我会同时使用这两种方法,具体取决于我使用的是 Web 还是服务引用。

【讨论】:

  • +1 用于 SoapExtension,也成功使用了它。 OP 没有提到它是否是 web/windows 客户端。如果是网络,那么我不相信链接中的 SoapExtenstion 代码是网络安全的。
【解决方案2】:

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

Fiddler Web Debugger

值得注意的是,使用 Fiddler 调试 HTTPS 请求有一些注意事项。此页面说明了如何完成。

Fiddler Web Debugger - Debugging HTTPS traffic with Fiddler2

【讨论】:

    【解决方案3】:
    猜你喜欢
    • 2015-11-20
    • 2014-07-04
    • 1970-01-01
    • 1970-01-01
    • 2011-05-22
    • 2019-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多