WebサービスのクライアントであるC#アプリケーションがあります。私の要件の1つは、送信するSOAPをキャプチャできるようにすることです。これにより、問題がある場合は、バグを修正するか、問題が呼び出しているサービスにあることを示すことができます。 。
WebReferenceプロキシサービスクラスは、通常どおりSystem.Web.Services.Protocols.SoapHttpClientProtocol
から派生しています。私が魔法の杖を持っていた場合、この基本クラスにイベントOnPost
を実装させ、SOAP=をログに書き込んで続行できるようにします。
WireSharkのようなパケットスニファを実行する以外に、このレベルのログを取得する簡単な方法はありますか?
アプリケーションがローカルボックスで実行されていて、Webサービスがファンキーな動作をしていない場合は、Fiddlerを使用できます。 IEを起動してFiddlerを実行すると、Webサービスの呼び出しがFiddlerのプロキシも経由することがわかります。
私は今朝、ほとんど同じことをするために今朝使用しました。私のWebサービスが送信しているデータが乱れていないことを証明する必要がありました。
このトラフィックをフィドラーで表示するには、次のコードを使用します。
mySoapHttpClientProtocol.Url = mySoapHttpClientProtocol.Url.Replace("localhost", "localhost.fiddler");
それ以外の場合、Visual Studioの組み込みWebサーバーはすべてのプロキシをバイパスします。
SoapExtensions を見てください。
それらはあなたが必要とするものです。
「。」だけ「localhost」の後にエンドポイントのアドレスを追加します。このような:
<endpoint address="http://localhost.:8868/FEInvoice.asmx" binding="basicHttpBinding"
bindingConfiguration="FEInvoice_Test" contract="EInvoiceIntegration.FEInvoiceSoap"
name="FEInvoice_Test" />
何らかの理由で、Visual Studioに付属のASP.NET開発サーバーを使用すると、Fiddlerにローカルサービスコールが表示されませんでした。これを回避するために、SOAPメッセージをキャプチャするために、実行時にWebサービスのURLをFiddlerポートに変更しました。
たとえば、イミディエイトウィンドウからこれを行うことができます。
myservice.Url = "localhost:8888"(またはFiddlerを使用しているポート)
SoapUIクライアントを使用して応答をテストしました。