2014-01-10 87 views
37

我遇到了Visual Studio 2013和我們的公司代理問題(登錄不起作用,更新不起作用,Visual Studio畫廊不工作,nuget和git失敗) 。所有這些都在做http或https請求。 (例如http://visualstudiogallery.msdn.microsoft.com/)。在VS2013中,我剛剛獲得了旋轉進度條或關於無網絡連接的消息。使用Fiddler來嗅探Visual Studio 2013請求(代理防火牆)

瀏覽器(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的NAK,並將其與證書回覆,但是網關仍希望用戶代理:

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

但我的問題不是關於使用Visual Studio作爲(DEBUG等)與VS2014運行的程序。我在我的帳戶下運行VS2014(不是VS開始的任務)。問題出在VisualStudio本身(它需要執行GIT,NUGET,登錄等),所有這些都將轉到Microsoft網站。但我看不出哪些在這裏被封鎖。 –

+0

聽起來似乎合理。我看着C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Config,發現部分和還沒有。但是我上面注意到的是,更改VS2013本身的web.config(devenv.exe.config)應該已經強制VS轉到fiddler。我很驚訝它沒有。我會測試兩者並報告回來(但是我要出去度假,所以可能要等待)。 –

+0

你可以把你的答案作爲一個單獨的帖子下來,這樣我就可以爲你解答這個問題,並給你信心? –

回答

35

如果你想看看與小提琴手的交通,你可能想要去改變的途徑machine.config文件,以便所有.NET應用程序都將通過Fiddler發送流量。這有助於確保您從服務中運行的進程中捕獲數據等。

在文件夾C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config中打開machine.config。 請注意,如果您正在調試64位服務(如ASP.NET),則需要查看Framework64文件夾而不是Framework文件夾。同樣,如果您使用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流量。

+1

超級有用,謝謝埃裏克。我也可以確認這個工作與查爾斯代理成功。 – lux

+0

除了創作者的迴應之外,不能期望! –

+0

不好意思,但我有類似的問題,並安裝Fiddler4來嗅探通信。然後我注意到只要Fiddler4正在運行(我沒有碰到Fiddler UI中的任何東西)就足以讓Visual Studio突然通過我們的公司代理進行通信。只要我停止Fidder,VS就不能再進行通信。什麼可能導致? – Mykro

6

或者,您可以使用輕量級的方式;

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

+0

什麼是WebProxy?在dotnet中是否有任何類?我嘗試在使用V​​S2013時發現這個類,但沒有運氣。 – Mou

+1

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

12

我的老闆提出了另一種簡單的方法來解決這個問題。你可以在uri中添加「fiddler」。例如:http://localhost:52101/ - >http://localhost.fiddler:52101/

+1

這是一個好主意,但它不適合我:我得到HTTP錯誤401.1 - 在IE憑證彈出對話框中輸入憑證後未經授權。刷新網站後,我得到了「[Fiddler]與'localhost'的連接失敗 錯誤:ConnectionRefused(0x274d)。 System.Net.Sockets.SocketException由於目標機器主動拒絕它127.0,因此無法建立連接。 0.1:4453「。當通過visual studio直接運行網站時,憑證彈出窗口不會出現。你能幫我嗎? – Matt

+0

爲我工作。謝謝! – Alireza

+0

我也可以添加「爲我工作」。漂亮而快速的解決方案 – Dan