在C#客户端捕获SOAP消息

时间:2012-11-26 17:50:33

标签: c# web-services logging soap

我一直致力于在C#中编写一个使用第三方Web服务的客户端。我有一个来自它们的wsdl,它生成的引用在大多数情况下工作得很好。然而,我遇到了一些问题,而且运行该服务的优秀人员没有提供任何帮助。

我已经推断出找出问题的最有效方法是捕获出站和入站SOAP消息,以便与其设计文档中显示的原型进行比较。我知道,基于wsdl和现有Java应用程序的代码(以及他们自己的例子),当我调用服务的方法时,我正在提供正确的参数。如果我可以证明我发送服务的消息符合他们的原型,那么我至少可以向他们提出问题,证明这是他们的错,而不是我的错,从而(希望)导致他们提供更新的文档或修复服务。

我无法弄清楚如何在C#中设置这种消息捕获。我已经阅读了一些关于SoapExtension和WCF等的内容,但这不是一个WCF应用程序,并且在运行应用程序时向app.config添加任何类型的日志信息似乎都不起作用。我在网上找到的其他代码示例都没有。

我该如何处理?是否有必要尝试将此客户端转换为WCF平台(如果我这样做,创建控制台界面和独立GUI会有什么影响)?我是否应该尝试创建一个继承自wsdl生成的类的派生类,并从头开始编写捕获代码?我是否错过了一些方便的工具,可以为我做这一切而不需要我做一堆编码?

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:3)

如果您只想从网络服务电话中捕获原始数据,请看一下:

http://www.soapui.org/

我一直用它进行测试。

答案 1 :(得分:3)

我在使用基于PHP的soap服务的MVC3应用程序遇到了同样的问题。只需启动Fiddler 2 http://www.fiddler2.com并让它捕获请求。 Fiddler捕获您的计算机发出的每个HTTP和HTTPS请求。只需为您的应用程序打开调试器,这样您就可以确切地查看SOAP请求的确切时间并在Fiddler中查看它。