web-dev-qa-db-ja.com

C#では、SOAPをWebサービス呼び出しで使用するにはどうすればよいですか?

WebサービスのクライアントであるC#アプリケーションがあります。私の要件の1つは、送信するSOAPをキャプチャできるようにすることです。これにより、問題がある場合は、バグを修正するか、問題が呼び出しているサービスにあることを示すことができます。 。

WebReferenceプロキシサービスクラスは、通常どおりSystem.Web.Services.Protocols.SoapHttpClientProtocolから派生しています。私が魔法の杖を持っていた場合、この基本クラスにイベントOnPostを実装させ、SOAP=をログに書き込んで続行できるようにします。

WireSharkのようなパケットスニファを実行する以外に、このレベルのログを取得する簡単な方法はありますか?

16
David Chappelle

私はあなたが探しているものはこの質問で扱われていると思います:

ASP.netで実行されているWeb参照クライアントからRAWソープデータを取得する

しかし、それはたくさんのコードのように見えます。

15
Zachary Yates

アプリケーションがローカルボックスで実行されていて、Webサービスがファンキーな動作をしていない場合は、Fiddlerを使用できます。 IEを起動してFiddlerを実行すると、Webサービスの呼び出しがFiddlerのプロキシも経由することがわかります。

私は今朝、ほとんど同じことをするために今朝使用しました。私のWebサービスが送信しているデータが乱れていないことを証明する必要がありました。

4
Moose

このトラフィックをフィドラーで表示するには、次のコードを使用します。

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

それ以外の場合、Visual Studioの組み込みWebサーバーはすべてのプロキシをバイパスします。

2
bnieland

SoapExtensions を見てください。

それらはあなたが必要とするものです。

1
FlySwat

「。」だけ「localhost」の後にエンドポイントのアドレスを追加します。このような:

      <endpoint address="http://localhost.:8868/FEInvoice.asmx" binding="basicHttpBinding"
    bindingConfiguration="FEInvoice_Test" contract="EInvoiceIntegration.FEInvoiceSoap"
    name="FEInvoice_Test" />
0
uzay95

何らかの理由で、Visual Studioに付属のASP.NET開発サーバーを使用すると、Fiddlerにローカルサービスコールが表示されませんでした。これを回避するために、SOAPメッセージをキャプチャするために、実行時にWebサービスのURLをFiddlerポートに変更しました。

たとえば、イミディエイトウィンドウからこれを行うことができます。

myservice.Url = "localhost:8888"(またはFiddlerを使用しているポート)

SoapUIクライアントを使用して応答をテストしました。

0
Rob Kent