回答:
これをweb.configに追加する必要があります
<system.net>
<defaultProxy>
<proxy bypassonlocal="False" usesystemdefault="True" proxyaddress="http://127.0.0.1:8888" />
</defaultProxy>
</system.net>
それだけですが、フィドラーを閉じた後でweb.config行を削除することを忘れないでください。そうしないと、エラーが発生します。
リファレンス:http : //fiddler2.com/documentation/Configure-Fiddler/Tasks/UseFiddlerAsReverseProxy
http://
、プロキシアドレスを指定することではありませんでした。あなたが言及したように、残りはすべて同じでした。
http://localhost/abc.svc
へhttp://HOSTNAME/abc.svc
Fiddlerはインバウンドリクエストではなくアウトバウンドリクエストをリッスンするため、Fiddlerを使用してサービスに着信するすべてのリクエストを監視することはできません。
Fiddlerで得られる最高の機能は、コンソールアプリによって生成されたすべてのリクエストを確認できることです(他のパイプラインを使用するのではなく、アプリがWebリクエストを生成するとします)。
すべての着信要求を監視できる、より強力な(しかし、より使いにくい)ツールが必要な場合は、WireSharkをチェックしてください。
編集する
私は修正された立場です。Fiddlerをリバースプロキシとして構成するための指示を投稿してくれたEric Lawに感謝します。
いくつかのユースケースのコメント/回答に記載されている警告をまとめます。
ほとんどの場合、http: //docs.telerik.com/fiddler/Configure-Fiddler/Tasks/ConfigureDotNETAppを参照してください
コンソールアプリでは、以下を指定する必要がない場合がありますproxyaddress
。
<proxy bypassonlocal="False" usesystemdefault="True" />
IISでホストされているWebアプリケーション/何かでは、追加する必要がありますproxyaddress
:
<proxy bypassonlocal="False" usesystemdefault="True" proxyaddress="http://127.0.0.1:8888" />
HttpWebRequest
常にを含むURLのFiddlerプロキシをバイパスするlocalhost
ため、マシン名などのエイリアスを使用するか、「hosts」ファイルに何かを作成する必要があります(これが理由です)のようなものlocalhost.fiddler
やhttp://HOSTNAME
作品)を指定したproxyaddress
場合、Fiddlerがオンになっていない場合は、設定から削除する必要があります。そうしないと、アプリからのリクエストによって次のような例外がスローされます。
ターゲットマシンがアクティブに拒否したため、接続を確立できませんでした127.0.0.1:8888
通信を送信しているクライアントを制御できる場合、これは簡単です。クライアント側のサービスクラスにHttpProxyを設定するだけです。
たとえば、スマートフォンで実行されているWebサービスクライアントを追跡するためにこれを行いました。クライアント側の接続で、ネットワーク上のPCで実行されているFiddlerのIP /ポートにプロキシを設定しました。その後、スマートフォンアプリは、すべての発信通信をFiddlerを介してWebサービスに送信しました。
これは完全に機能しました。
クライアントがWCFクライアントの場合、プロキシの設定方法については、このQ&Aを参照してください。
クライアント側アプリのコードを変更する機能がない場合でも、クライアントが使用するWebサービススタックによっては、管理上プロキシを設定できる場合があります。
標準のWCFトレース/診断
何らかの理由でFiddlerを機能させることができない場合、または別の方法で要求をログに記録したい場合は、標準のWCFトレース機能を使用することもできます。これにより、見栄えの良いファイルが作成されます。
文書
https://docs.microsoft.com/en-us/dotnet/framework/wcf/samples/tracing-and-message-loggingを参照してください
構成
以下を設定に追加し、c:\logs
存在することを確認して、再構築し、リクエストを行います。
<system.serviceModel>
<diagnostics>
<!-- Enable Message Logging here. -->
<!-- log all messages received or sent at the transport or service model levels -->
<messageLogging logEntireMessage="true"
maxMessagesToLog="300"
logMessagesAtServiceLevel="true"
logMalformedMessages="true"
logMessagesAtTransportLevel="true" />
</diagnostics>
</system.serviceModel>
<system.diagnostics>
<sources>
<source name="System.ServiceModel" switchValue="Information,ActivityTracing"
propagateActivity="true">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="System.ServiceModel.MessageLogging">
<listeners>
<add name="xml" />
</listeners>
</source>
</sources>
<sharedListeners>
<add initializeData="C:\logs\TracingAndLogging-client.svclog" type="System.Diagnostics.XmlWriterTraceListener"
name="xml" />
</sharedListeners>
<trace autoflush="true" />
</system.diagnostics>
私はBrad Remからの最初の回答を試して、BasicHttpBindingの下のweb.configでこの設定にたどり着きました:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding bypassProxyOnLocal="False" useDefaultWebProxy="false" proxyAddress="http://127.0.0.1:8888" ...
...
</basicHttpBinding>
</bindings>
...
<system.serviceModel>
これが誰かを助けることを願っています。
HTTPデバッガーの無料版を使用できます。
これはプロキシではなく、web.configを変更する必要はありません。
また、両方を表示できます。着信および発信HTTPリクエスト。 HTTPデバッガー無料