2008-11-20 17 views
15

我有一個C#應用程序,它是Web服務的客戶端。我的一個要求是允許捕獲我發送的SOAP,這樣如果出現問題,我可以修復該錯誤,或​​者證明問題出在我打電話的服務中。在C#中,我將如何捕獲在Web服務調用中使用的SOAP?

我的Web引用代理服務類從System.Web.Services.Protocols.SoapHttpClientProtocol照常導出。如果我有一個魔術棒,我會讓這個基類實現一個事件OnPost,我可以處理將SOAP寫入我的日誌並繼續。

短期運行一個數據包嗅探器像Wireshark的,有沒有一種簡單的方法來獲得這個級別的日誌記錄?

+0

[從Web引用客戶端獲取RAW皁數據在ASP.net運行]的可能的複製(http://stackoverflow.com/questions/300674/getting-raw-soap-data-從一個Web引用客戶端運行在ASP網) – gecco 2016-12-21 07:21:08

回答

15

我想你在找什麼在這個問題是解決:

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

它看起來像一個大量的代碼雖然。

+0

SoapExtension不是理想的解決方案(需要管理狀態,影響所有肥皂調用,而不僅僅是你想記錄的),但它確實有效。謝謝! – 2008-11-20 21:53:53

1

看看SoapExtensions

他們是你所需要的。

+0

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

4

如果應用程序在本機上運行,​​網絡服務沒有做任何事情時髦,你可以使用Fiddler。啓動IE,運行Fiddler,你會看到你的web服務調用也通過fiddler的代理。

我只是用這個今天早上做幾乎同樣的事情。我必須證明我的Web服務發送的數據沒有被搞亂。

0

出於某種原因,使用隨Visual Studio中的ASP.NET開發服務器時提琴手不顯示我的本地服務電話。爲了解決這個問題,我在運行時將Web服務Url改爲Fiddler端口,以捕獲SOAP消息。

您可以從即時窗口做到這一點,例如:

myservice.Url =「本地主機:8888」(或任何與你有上的提琴手)

我用了SoapUI客戶端,測試響應。

2

看到這個流量在小提琴手使用下面的代碼:

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

否則,Visual Studio中的內置Web服務器將繞過所有代理。

0

只是「。」在「本地主機」後添加您的端點中的地址。 這樣的:

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