web-dev-qa-db-fra.com

Utilisation de Fiddler pour renifler les demandes Visual Studio 2013 (pare-feu proxy)

J'ai des problèmes avec Visual Studio 2013 et notre proxy d'entreprise (la connexion ne fonctionne pas, les mises à jour ne fonctionnent pas, la galerie de Visual Studio ne fonctionne pas, nuget et git échouent). Tous ces éléments font des requêtes http ou https. (par exemple http://visualstudiogallery.msdn.Microsoft.com/ ). Dans VS2013, je reçois simplement des barres de progression ou des messages sur l'absence de connexion réseau.

Aucun problème avec le navigateur, (chrome, IE, firefox) car ils comprennent tous les proxys (407 rejets et répondent ensuite avec des informations d'identification).

Je veux donc comprendre pourquoi VS2013 ne fonctionne pas. Mais je ne vois aucun trafic lorsque je dis à fiddler2 de surveiller le processus DEVENV.EXE (ou tous les processus).

BTW, j'ai essayé quelques modifications au fichier web.config (devenv.exe.config) pour m'assurer qu'il va au proxy (j'ai vu cela dans le générateur de pile) mais cela ne fonctionne pas pour moi. Voir les ajouts à la section ci-dessous:

    <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>

Mise à jour

Eric, j'ai pris votre suggestion et je l'ai juste insérée dans le fichier C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\devenv.exe.config.

Ce que j'ai mis était:

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

Ce que j'ai trouvé, c'est que VS2013 n'envoie pas de chaîne d'agent utilisateur. Il connaît les naks # 407 et il répond avec des informations d'identification, mais la passerelle veut toujours un agent utilisateur:

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

Si vous voulez regarder le trafic avec Fiddler, vous voulez probablement suivre la voie du changement de machine.config fichier afin que toutes les applications .NET envoient du trafic via Fiddler. Cela permet de garantir que vous capturez les données des processus exécutés dans les services, etc.

Ouvrir machine.config dans le dossier C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config. Notez que si vous déboguez un service 64 bits (comme ASP.NET), vous voudrez regarder dans le Framework64 dossier au lieu du dossier Framework. De même, si vous utilisez une version .NET antérieure à 4.0, vous devrez ajuster la partie version du chemin.

Ajoutez le bloc XML suivant en tant qu'homologue à l'élément system.net existant, en remplaçant tout élément defaultProxy existant s'il est présent:

<!-- 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>

Réf http://fiddler2.com/blog/blog/2013/01/08/capturing-traffic-from-.net-services-with-fiddler

Remarque: vous pouvez utiliser Fiddler pour injecter un User-Agent en-tête sur les demandes sortantes si vous le souhaitez. De plus, dans la dernière version de Fiddler, vous pouvez Fichier> Importer> Capture de paquets pour collecter le trafic HTTP à partir des fichiers .cap capturés à l'aide de Microsoft NetMon ou Microsoft Message Analyzer.

40
EricLaw

Mon patron a suggéré un autre moyen simple de résoudre ce problème. Vous pouvez simplement ajouter "violoneux" dans l'uri. Par exemple: http: // localhost: 52101 / -> http: //localhost.fiddler: 52101 /

14
Pritam De

Alternativement, vous pouvez utiliser de manière légère comme;

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

9
Teoman shipahi