【发布时间】:2008-09-29 17:49:47
【问题描述】:
我正在我的客户端应用程序中使用第三方 .NET WebService。出于调试目的,我想捕获从我的服务器发送的 SOAP 请求。我该怎么做呢?这是在 .NET 2.0 上完成的,没有使用 WCF 或 WSE。
【问题讨论】:
标签: .net web-services logging .net-2.0
我正在我的客户端应用程序中使用第三方 .NET WebService。出于调试目的,我想捕获从我的服务器发送的 SOAP 请求。我该怎么做呢?这是在 .NET 2.0 上完成的,没有使用 WCF 或 WSE。
【问题讨论】:
标签: .net web-services logging .net-2.0
我不久前写了一篇关于此的帖子,标题为“Logging SOAP Messages in .NET”。
最简单的方法是使用 .NET 已经提供的工具。
1. 扩展类SoapExtension。
2. 覆盖方法 ProcessMessage 以获得 Soap 请求的完整输出,然后将此信息输出到文本文件或事件日志。
public class SoapMessageLogger : SoapExtension
{
//…
public override void ProcessMessage(SoapMessage message)
{
switch(message.Stage)
{
case SoapMessageStage.BeforeDeserialize:
LogResponse(message);
break;
case SoapMessageStage.AfterSerialize:
LogResponse(message);
break;
// Do nothing on other states
case SoapMessageStage.AfterDeserialize:
case SoapMessageStage.BeforeSerialize:
default:
break;
}
}
//…
}
【讨论】:
如果出于调试目的,我只需将 Web 请求配置为使用代理并通过提琴手 (http://www.fiddlertool.com) 发送整个请求,然后您就可以准确地看到通过网络传输的内容。
【讨论】:
您可以使用许多选项。当然有一些商业工具(如 SOAPScope),但如果您只是想捕获请求/响应的原始内容,除了 Fiddler(Walden 已经提到)之外,还有其他一些工具。
就个人而言,我一直是 Simon Fell 的 TcpTrace 和 YATT 的长期用户。
如果您对实际检测代码感兴趣,以便它可以自行完成(例如,通过将所有内容记录到文件或其他内容),那么您可能希望考虑在您的服务器上实现 SoapExtension .
【讨论】:
您可以使用 SoapExtension 记录 Soap 调用。
【讨论】:
我过去曾使用过the Web Service, SOA and SOAP Testing Tool - soapUI 并取得了很好的成功。
-Edoode
【讨论】:
也许 wireshark ?我一直使用它来捕获我的应用程序的流量。
【讨论】: