アクセスできないWeb APIサービスの1つにリクエストを送信するためにHttpClientを使用しており、クライアントからサーバーに到達する実際のリクエストストリームをトレースする必要があります。 Fiddlerを接続してリクエストをリッスンする方法はありますか?
要求の送信にSystem.Net.Http.HttpClientクラスを使用しています。
更新:探しているものが得られなかったため、この質問を改善しようとしています。 .Netクライアントアプリケーションを使用して、HTTPチャネル経由で独自のIISでホストされているWebサービスに接続します。IISと、ブラウザとWebSiteの間で生成されたトラフィックを監視しますが、HttpClientクラスを使用してWebサービスと通信する.Netクライアントプログラムによって生成されたトラフィックを監視する場合、奇妙なことにフィドラーはできません.Net HttpClientはWinInet APIをバイパスしてサービスに接続しているため、フィドラーはトラフィックを監視できませんか?
一般的に、アプリケーションが十分になる前にFiddlerを起動するだけです。これまでに試したことを説明していません。
http:// localhost:1234 のようなURLで接続している場合、それを http://localhost.fiddler:1234 / に変更すると、HttpClientからのリクエストは次のようになります。 Fiddlerに表示されます。
IISは、異なるユーザーID(デフォルトはApplicationPoolIdentity
)で実行されるため、インターネットオプションのプロキシ設定を使用しません。 @EricLawは、IIS/ASP.NETのトラフィックをキャプチャする問題に関する 良いポインター を提供しています。
IISを設定してログインアカウントを使用する代わりに、web.config
以下のように、HTTPClientにプロキシを強制的に使用させます。
<configuration>
<system.net>
<defaultProxy enabled="true" useDefaultCredentials="true">
<proxy proxyaddress="http://127.0.0.1:8888"/>
</defaultProxy>
</system.net>
</configuration>
MSDNからの使用の詳細 です。
.NETアプリケーションが現在のユーザーアカウントで実行されている場合は、構成セクション内に次のコンテンツを追加します。
<configuration>
<system.net>
<defaultProxy>
<proxy bypassonlocal="false" usesystemdefault="true" />
</defaultProxy>
</system.net>
</configuration>
注:重要:他の設定に関係なく、.NETはlocalhostを含むURLのFiddlerプロキシを常にバイパスします。そのため、localhostを使用するのではなく、マシン名を参照するようにコードを変更します。例えば:
このURLはFiddlerには表示されません。
http://localhost/X509SignCodeService/X509SigningService.asmx
このURLはFiddlerに表示されます。
http://mymachine/X509SignCodeService/X509SigningService.asmx
HttpTracer-この目的のために特別に構築したライブラリ を使用します。プロキシを設定する必要はありません。ハンドラのインスタンスをHttpClientに渡すのと同じくらい簡単です:new HttpClient(new HttpTracerHandler())
。試してみてください。Xamarin側にとっても、ASP.NETでのS2Sの目的にとっても非常に貴重です。