客户端上的.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; } } //… }