7

我在我的客户端应用程序中使用第三方 .NET WebService。出于调试目的,我想捕获从我的服务器发送的 SOAP 请求。我该怎么做呢?这是在不使用 WCF 或 WSE 的情况下在 .NET 2.0 上完成的。

4

6 回答 6

12

不久前,我写了一篇关于此的文章,标题为“在 .NET 中记录 SOAP 消息”。

最简单的方法是使用 .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;
    }
  }
  //…
}
于 2010-11-24T16:16:20.037 回答
5

如果出于调试目的,我只需将 Web 请求配置为使用代理并通过提琴手(http://www.fiddlertool.com)发送整个请求,那么您可以准确地看到通过网络传输的内容。

于 2008-09-29T17:56:05.187 回答
1

您可以使用许多选项。当然有一些商业工具(如 SOAPScope),但如果您只是想捕获请求/响应的原始内容,除了 Fiddler(Walden 已经提到过)之外,还有其他一些工具。

就个人而言,我一直是 Simon Fell 的TcpTraceYATT的长期用户。

如果您对实际检测代码感兴趣,以便它可以自行完成(例如,通过将所有内容记录到文件或其他内容),那么您可能希望考虑在您的服务器上实现SoapExtension 。

于 2008-09-29T18:42:28.417 回答
0

您可以使用 SoapExtension 记录 Soap 调用。

http://msdn.microsoft.com/en-us/magazine/cc164007.aspx

于 2008-09-29T18:44:56.817 回答
0

我过去使用过 Web 服务、SOA 和 SOAP 测试工具 - soapUI并取得了很好的成功。

-Edoode

于 2009-01-19T13:37:46.100 回答
0

也许是wireshark?我一直使用它来捕获我的应用程序的流量。

于 2011-10-18T13:55:49.127 回答