在C#中,我将如何捕获在Web服务调用中使用的SOAP?

问题描述:

我有一个C#应用程序,它是Web服务的客户端。我的一个要求是允许捕获我发送的SOAP,这样如果出现问题,我可以修复该错误,或​​者证明问题出在我打电话的服务中。在C#中,我将如何捕获在Web服务调用中使用的SOAP?

我的Web引用代理服务类从System.Web.Services.Protocols.SoapHttpClientProtocol照常导出。如果我有一个魔术棒,我会让这个基类实现一个事件OnPost,我可以处理将SOAP写入我的日志并继续。

短期运行一个数据包嗅探器像Wireshark的,有没有一种简单的方法来获得这个级别的日志记录?

+0

[从Web引用客户端获取RAW皂数据在ASP.net运行]的可能的复制(http://*.com/questions/300674/getting-raw-soap-data-从一个Web引用客户端运行在ASP网) – gecco 2016-12-21 07:21:08

我想你在找什么在这个问题是解决:

Getting RAW Soap Data from a Web Reference Client running in ASP.net

它看起来像一个大量的代码虽然。

+0

SoapExtension不是理想的解决方案(需要管理状态,影响所有肥皂调用,而不仅仅是你想记录的),但它确实有效。谢谢! – 2008-11-20 21:53:53

看看SoapExtensions

他们是你所需要的。

+0

谢谢,那正是我需要的。 – 2008-11-20 21:54:48

如果应用程序在本机上运行,​​网络服务没有做任何事情时髦,你可以使用Fiddler。启动IE,运行Fiddler,你会看到你的web服务调用也通过fiddler的代理。

我只是用这个今天早上做几乎同样的事情。我必须证明我的Web服务发送的数据没有被搞乱。

出于某种原因,使用随Visual Studio中的ASP.NET开发服务器时提琴手不显示我的本地服务电话。为了解决这个问题,我在运行时将Web服务Url改为Fiddler端口,以捕获SOAP消息。

您可以从即时窗口做到这一点,例如:

myservice.Url =“本地主机:8888”(或任何与你有上的提琴手)

我用了SoapUI客户端,测试响应。

看到这个流量在小提琴手使用下面的代码:

mySoapHttpClientProtocol.Url = mySoapHttpClientProtocol.Url.Replace("localhost", "localhost.fiddler"); 

否则,Visual Studio中的内置Web服务器将绕过所有代理。

只是“。”在“本地主机”后添加您的端点中的地址。 这样的:

 <endpoint address="http://localhost.:8868/FEInvoice.asmx" binding="basicHttpBinding" 
    bindingConfiguration="FEInvoice_Test" contract="EInvoiceIntegration.FEInvoiceSoap" 
    name="FEInvoice_Test" />