2

asmxWebサービスをテストするためのUIを作成しています。サーバーとクライアントは.NETです。クライアントプロキシは、wsdl.exeを使用して生成されています。

Webプロキシでメソッドを呼び出した結果として生成された送信および受信SOAPメッセージの文字列表現をインターセプトして保存したいので、送受信されたばかりのメッセージを表示する機能をUIに追加できます。

メッセージを解釈するためにコードを追加できる拡張ポイントのペアが2つあることをぼんやりと思い出しますが、これがどのように行われたかを思い出せません。私が念頭に置いている例では、メッセージの一部をクライアントで圧縮し、その逆をサーバーで圧縮することを考えていますが、私のシナリオでは、メッセージを変更するのではなく保存したいと思います。

どんなヒントや助けもありがたく受けました。

(私はSoapExtensionを部分的に実装しました。ChainStreamメソッドがどのように機能するかわかりません。また、soapメッセージがトラップされたことをリスナーに通知する方法がわかりません(soapのインスタンス化を制御できないため)拡大)。'

4

4 に答える 4

1

あなたはSoapExtensionで正しい方向に進んでいます。ここにドキュメントと例がありますか?http://msdn.microsoft.com/en-us/library/system.web.services.protocols.soapextension.aspx

ChainStreamのアイデアは、リクエストが書き込まれるネットワークストリームを渡され、別のストリームを返すオプションがあります。したがって、リクエストのコピーを保存する場合は、Webサービスクライアントがリクエストを書き込むMemoryStreamを返します。次に、ProcessMessage呼び出しで、そこからデータをコピーしてUIに渡すことができます。

于 2009-11-07T04:38:38.073 に答える
1

XMLをキャプチャする別の方法は、Wiresharkアプリケーションを介して送信されます。通信ネットワークカードを傍受します。

私の場合、彼のアドレスの一部としてPIOSOSを文字列化するサービスを呼び出しました。[パケットの検索]ウィンドウを使用して検索しました。

次に、XMLを見つけました。

写真をご覧ください。

(私は知っています...それはプログラム的な方法ではありませんが、その価値があります。笑)

ここに画像の説明を入力してください

于 2016-08-11T20:43:37.370 に答える
0

私は2つのトリックを提案します:

  • プロキシをサブクラス化し、メソッドをオーバーロードします(少し退屈ですが、このプロジェクトのようにコードを生成できます:http: //ftwsf.codeplex.com/
  • 非同期シグニチャと各メソッドの「完了」イベントへのサブスクライブを使用します(多くのコードへの書き込みを回避するために、リフレクションによってこれを行うことができます)

これらのトリックについてさらに情報が必要な場合は、私に知らせてください。

于 2009-11-02T14:56:26.527 に答える
0

クライアントテクノロジとしてWCFを使用する方が本当に良いでしょう。次に、WCFメッセージレベルのトレースを使用して、着信メッセージと発信メッセージをログに記録できます。これは、構成によって簡単に実行されます。

ASMXサービスを使用しているという理由だけで、ASMXクライアントを使用する必要がある理由はありません。

于 2009-11-07T04:46:47.470 に答える