2008-09-29 70 views
6

我正在使用客戶端應用程序中的第三方.NET WebService。爲了調試目的,我想捕獲從我的服務器發送的SOAP請求。我會如何去做這件事?這是在不使用WCF或WSE的情況下在.NET 2.0上完成的。客戶端上的.NET日誌SOAP請求

回答

5

如果是爲了調試的目的,我只是配置Web請求使用代理併發送整個請求,但通過提琴手(http://www.fiddlertool.com),那麼你可以看到什麼是通過電線傳輸。

+0

在放棄和嘗試小提琴手之前,我嘗試了6種不同的代碼方法。如果我閱讀了它並且看到它支持加密流量,我將首先開始使用它。 – carson 2008-11-06 03:00:42

1

有很多選項可以使用。當然有一些商業工具(比如SOAPScope),但是如果你只是想捕獲請求/響應的原始內容,除了Fiddler之外還有幾種工具(Walden已經提到過)。

就我個人而言,我一直是Simon Fell的TcpTraceYATT的長期用戶。

如果您有興趣實際編寫代碼,以便它可以自行完成(比如將所有內容記錄到文件或某個文件中),那麼您可能需要考慮在您的服務器上實現SoapExtension

11

我寫了一篇關於這個在不久前題爲 「Logging SOAP Messages in .NET」。

最簡單的方法是使用.NET已經提供的工具。

擴展類SoapExtension

2.覆蓋的方法ProcessMessage,讓您的SOAP請求的完整輸出,然後將該信息輸出到一個文本文件或事件日誌。

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

也許Wireshark的?我總是使用它來捕獲我的應用程序的流量。