クライアント アプリケーションでサード パーティの .NET WebService を使用しています。デバッグの目的で、サーバーから送信されている SOAP 要求をキャプチャしたいと考えています。どうすればこれを行うことができますか?これは、WCF または WSE を使用せずに .NET 2.0 で行われています。
6 に答える
これについては、少し前に「 Logging SOAP Messages in .NET 」というタイトルの投稿を書きました。
最も簡単な方法は、.NET で既に提供されているツールを使用することです。
1.クラスを拡張し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;
}
}
//…
}
デバッグ目的の場合は、プロキシを使用するようにWebリクエストを構成し、リクエスト全体をfiddler(http://www.fiddlertool.com)経由で送信するだけで、ネットワークを介して何が送信されているかを正確に確認できます。
使用できるオプションは多数あります。これには確かに商用ツールがいくつかありますが (SOAPScope など)、要求/応答の生のコンテンツをキャプチャするだけの場合は、Fiddler 以外にもいくつかのツールがあります (Walden は既に言及しています)。
個人的には、私は Simon Fell のTcpTraceとYATTの長年のユーザーです。
実際にコードをインストルメント化して、それ自体で実行できるようにすることに関心がある場合 (たとえば、すべてをファイルまたは何かに記録することによって)、サーバーにSoapExtensionを実装することを検討することをお勧めします。
多分ワイヤーシャーク?アプリケーションのトラフィックをキャプチャするために常に使用しています。
SoapExtension を使用して、Soap 呼び出しをログに記録できます。
私はWeb サービス、SOA、SOAP のテスト ツールである soapUIを使用してきましたが、これまで成功を収めてきました。
-エドード