2014-01-10 20 views
37

Ich habe Probleme mit Visual Studio 2013 und unserem Unternehmens-Proxy (Anmeldung funktioniert nicht, Updates funktionieren nicht, Visual Studio-Galerie funktioniert nicht, nuget und Git fehlschlagen) . Alle diese tun HTTP- oder HTTPS-Anfragen. (z.B. http://visualstudiogallery.msdn.microsoft.com/). In VS2013 bekomme ich nur Fortschrittsbalken oder Meldungen über keine Netzwerkverbindung.Verwenden von Fiddler, um Visual Studio 2013-Anfragen (Proxy-Firewall) zu scannen

Kein Problem mit dem Browser (Chrome, IE, Firefox), da sie alle Proxies verstehen (407 Ablehnungen und dann mit Anmeldeinformationen reagieren).

Also ich möchte herausfinden, warum VS2013 nicht funktioniert. Ich kann jedoch keinen Datenverkehr sehen, wenn ich fiddler2 den Prozess DEVENV.EXE (oder alle Prozesse) anzeigen lasse.

BTW, ich habe einige Änderungen an der Datei web.config (devenv.exe.config) versucht, um sicherzustellen, dass es an den Proxy geht (ich sah dies im Stack Builder), aber es funktioniert nicht für mich. Siehe die Ergänzungen der Abschnitt unter:

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

aktualisieren

Eric, nahm ich Ihren Vorschlag und nur gestopft in die C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\devenv.exe.config Datei.

Was war ich setzen in:

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

war Was ich fand, dass VS2013 kein User-Agent-String sendet. Er weiß über # 407 naks und es antwortet mit Anmeldeinformationen, aber das Gateway will noch einen User-Agent:

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

Aber mein Problem ist nicht über Programme laufen mit Visual Studio als (DEBUG, etc) mit einem VS2014.Ich verwende VS2014 wie unter meinem Konto (kein Job, der von VS gestartet wurde). Das Problem ist mit VisualStudio selbst (es muss GIT, NUGET, Sign-IN etc. tun) alle auf Microsoft-Websites gehen. Aber ich kann nicht sehen, welche hier blockiert sind. –

+0

Klingt plausibel. Ich schaute auf C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Config und fand die Sektion und ist noch nicht da. Aber was ich oben notiert habe, ist, dass das Ändern der Datei web.config (devenv.exe.config) für VS2013 selbst VS gezwungen haben sollte, zu fiddler zu gehen. Ich war überrascht, dass es nicht war. Ich werde beide testen und melden (aber ich bin auf Urlaub unterwegs, so dass es warten muss). –

+0

Können Sie Ihre Antwort als separaten Beitrag veröffentlichen, so dass ich sie hervorheben und Ihnen Anerkennung für die Lösung dieses Problems geben kann? –

Antwort

35

Wenn Sie auf den Verkehr mit Fiddler aussehen wollen, möchten Sie wahrscheinlich die Route der Wechsel der gehen machine.config Datei, so dass alle .NET-Anwendungen Datenverkehr über Fiddler senden. Dies hilft sicherzustellen, dass Sie Daten von Prozessen erfassen, die in Services usw. ausgeführt werden.

Öffnen Sie machine.config im Ordner C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config. Beachten Sie, dass Sie beim Debuggen eines 64-Bit-Diensts (wie ASP.NET) lieber im Ordner Framework64 statt im Framework-Ordner suchen. Wenn Sie eine .NET-Version vor Version 4.0 verwenden, müssen Sie den Versionsteil des Pfades entsprechend anpassen.

Fügen Sie den folgenden XML-Block als Peer an das bestehenden system.net Element, eventuell vorhandenes Element ersetzt default falls vorhanden:

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

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

Hinweis: Sie können Fiddler verwenden eine injizieren User-Agent Header auf ausgehende Anfragen, wenn Sie möchten. In der neuesten Version von Fiddler können Sie auch Datei> Importieren> Paket erfassen, um HTTP-Datenverkehr aus CAP-Dateien zu sammeln, die mit Microsoft NetMon oder Microsoft Message Analyzer erfasst wurden.

+1

Super hilfreich, danke Eric. Ich kann bestätigen, dass dies auch mit Charles Proxy erfolgreich funktioniert. – lux

+0

Kann nicht mehr als eine Antwort vom Schöpfer erwarten! –

+0

Entschuldigung für den leicht tangentialen Kommentar, aber ich hatte ein ähnliches Problem und installiert Fiddler4, um die Comms zu schnüffeln. Dann bemerkte ich, dass es einfach genug war, Fiddler4 laufen zu lassen (ich habe in der Benutzeroberfläche von Fiddler nichts angefasst), damit Visual Studio plötzlich über unseren Corporate Proxy kommunizieren konnte. Sobald ich Fidder gestoppt hatte, konnte VS nicht mehr kommunizieren. Was könnte das verursachen? – Mykro

6

Alternativ können Sie leichte Weise wie verwenden;

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

+0

Was ist WebProxy? Ist es irgendeine Klasse in Dotnet? Ich versuche, diese Klasse zu finden, wenn ich mit VS2013 arbeite, aber kein Glück. – Mou

+1

@Mou https://msdn.microsoft.com/en-us/library/system.net.webproxy(v=vs.110).aspx –

12

Mein Chef schlug eine andere einfache Möglichkeit vor, um dieses Problem zu lösen. Sie können einfach "Fiddler" in der URI hinzufügen. Zum Beispiel: http://localhost:52101/ ->http://localhost.fiddler:52101/

+1

Das ist eine gute Idee, aber es funktioniert nicht für mich: Ich bekomme HTTP-Fehler 401.1 - Nicht autorisiert nach Eingabe der Anmeldeinformationen im IE-Anmeldedialogfeld. Nach dem Aktualisieren der Site bekomme ich "[Fiddler] Die Verbindung zu 'localhost' ist fehlgeschlagen. Fehler: ConnectionRefused (0x274d). System.Net.Sockets.SocketException Es konnte keine Verbindung hergestellt werden, da der Zielcomputer 127.0 aktiv ablehnte. 0,1: 4453 ". Wenn die Website direkt über Visual Studio ausgeführt wird, wird das Anmeldedatenfenster nicht angezeigt. Kannst du helfen? – Matt

+0

Arbeitete für mich. Vielen Dank! – Alireza

+0

Ich kann auch ein "für mich gearbeitet" hinzufügen. Schöne und schnelle Lösung. – Dan