web-dev-qa-db-ja.com

Fiddlerを使用してVisual Studio 2013のリクエストを傍受する(プロキシファイアウォール)

Visual Studio 2013と企業プロキシ(サインインが機能しない、更新が機能しない、Visual Studioギャラリーが機能しない、nugetとgitが失敗する)で問題が発生しています。これらはすべて、httpまたはhttps要求を実行しています。 (例: http://visualstudiogallery.msdn.Microsoft.com/ )。 VS2013では、進行状況バーが回転するか、ネットワーク接続がないというメッセージが表示されるだけです。

ブラウザ(chrome、IE、firefox)で問題はありません。それらはすべてプロキシ(407拒否してから資格情報で応答する)を理解しているためです。

VS2013が機能しない理由を理解したいと思います。しかし、fiddler2にDEVENV.EXEプロセス(またはすべてのプロセス)を監視するように指示すると、トラフィックが表示されません。

ところで、web.config(devenv.exe.config)ファイルにいくつかの変更を試みて、プロキシに送られることを確認しました(スタックビルダーでこれを確認しました)が、私には機能しません。以下のセクションへの追加を参照してください。

_    <system.net>
                <defaultProxy useDefaultCredentials="true" enabled="true">
                 <proxy proxyaddress="http://gw6.OURSITE.com:3128" />
                </defaultProxy>
      <settings>
        <ipv6 enabled="true"/>
        <servicePointManager expect100Continue="false" />
       </settings>
    </system.net>
_

更新

エリック、私はあなたの提案を受け取り、C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\devenv.exe.configファイルに詰め込んだだけです。

私が入れたのは:

_  <system.net>
    <defaultProxy useDefaultCredentials="true" enabled="true">
      <proxy autoDetect="false" bypassonlocal="false" proxyaddress="http://127.0.0.1:8888" usesystemdefault="false" />
    </defaultProxy>
  </system.net>
_

私が見つけたのは、VS2013がユーザーエージェント文字列を送信していないことです。 #407 naksを認識しており、クレデンシャルで応答しますが、ゲートウェイはまだユーザーエージェントを必要としています。

_HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: text/html; charset=utf-8
Proxy-Connection: close
Connection: close
Content-Length: 1341

<html>
    <head>
        <title>Access Policy Denied: No User-Agent Specified</title>
        <meta name="description" content="Web Access Policy">
    </head>
    <body>
_
46
Dr.YSG

Fiddlerでトラフィックを確認する場合は、machine.configファイルを変更して、すべての.NETアプリケーションがFiddlerを介してトラフィックを送信するようにしたいと思うでしょう。これにより、サービスなどで実行されているプロセスからデータを確実にキャプチャできます。

machine.configフォルダーのC:\Windows\Microsoft.NET\Framework\v4.0.30319\Configを開きます。 64ビットサービス(ASP.NETなど)をデバッグする場合は、FrameworkフォルダーではなくFramework64フォルダーを検索することに注意してください。同様に、4.0より前の.NETバージョンを使用している場合、パスのバージョン部分を調整する必要があります。

次のXMLブロックを既存のsystem.net要素にピアとして追加し、既存のdefaultProxy要素がある場合はそれを置き換えます。

<!-- The following section is to force use of Fiddler for all applications, including those running in service accounts -->
 <system.net>
 <defaultProxy
                 enabled = "true"
                 useDefaultCredentials = "true">
 <proxy autoDetect="false" bypassonlocal="false" proxyaddress="http://127.0.0.1:8888" usesystemdefault="false" />
 </defaultProxy>
 </system.net>

参照 http://fiddler2.com/blog/blog/2013/01/08/capturing-traffic-from-.net-services-with-fiddler

注:必要に応じて、Fiddlerを使用してアウトバウンドリクエストにUser-Agentヘッダーを挿入できます。また、Fiddlerの最新バージョンでは、[ファイル]> [インポート]> [パケットキャプチャ]を使用して、Microsoft NetMonまたはMicrosoft Message Analyzerを使用してキャプチャした.capファイルからHTTPトラフィックを収集できます。

40
EricLaw

上司は、この問題を解決する別の簡単な方法を提案しました。 URIに「フィドラー」を追加するだけです。例: http:// localhost:52101 / -> http://localhost.fiddler:52101 /

14
Pritam De

または、次のような軽量な方法を使用できます。

if(Debugger.IsAttached){request.Proxy = new WebProxy( "http://localhost:8888/ "、true);}

9
Teoman shipahi