客户端上的.NET日志Soap请求

时间:2020-03-06 14:53:13  来源:igfitidea点击:

我在客户端应用程序中使用了第三方.NET WebService。出于调试目的,我想捕获从服务器发送的SOAP请求。我将如何去做呢?这是在.NET 2.0上完成的,没有使用WCF或者WSE。

解决方案

如果出于调试目的,我只是将Web请求配置为使用代理并通过fiddler(http://www.fiddlertool.com)发送整个请求,那么我们可以确切地看到通过有线传输的内容。

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

我个人是Simon Fell的TcpTrace和YATT的长期用户。

如果我们对实际检测代码感兴趣,以便它可以自己执行代码(例如,通过将所有内容记录到文件或者其他内容中),那么我们可能需要考虑在服务器上实现SoapExtension。

我们可以使用SoapExtension来记录Soap调用。

http://msdn.microsoft.com/zh-CN/magazine/cc164007.aspx

过去,我已经成功地使用了Web Service,SOA和SOAP测试工具soapUI。

-江户

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

最简单的方法是使用.NET已经提供的工具。

1.扩展类" SoapExtension"。

2.重写方法ProcessMessage以获得Soap Request的完整输出,然后将此信息输出到文本文件或者事件日志。

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;
    }
  }
  //…
}