2010-12-13 85 views
13

我遇到了.NET檢測通過Internet Explorer配置的代理設置的問題。.NET代理檢測

我正在編寫一個支持代理的客戶端應用程序,並測試我設置了一個由9個squid服務器組成的數組,以支持HTTP和HTTP的各種身份驗證方法。我有一個腳本,將IE更新爲我選擇的配置(哪個代理,通過「Auto」,PAC或硬編碼進行檢測)。

我已經嘗試了下面3種方法來檢測通過.NET的IE配置。偶然,我注意到.NET拿起了一套錯誤的代理服務器。 IE有正確的設置,如果我用IE瀏覽網頁,我可以看到我通過wireshark打擊了正確的服務器。

WebRequest.GetSystemWebProxy().GetProxy(destination);

GlobalProxySelection.Select.GetProxy(destination);

WebRequest.DefaultWebProxy

這裏有如下提示我:

  • 我的腳本設置在網絡服務器PAC文件,並在IE更新配置,然後清除IE的緩存
  • .NET似乎在特定的代理配置上「卡住」,並且我必須爲.NET設置另一個配置,以實現更改。有時候它似乎會選擇一些隨機的服務器(我確信它們不是隨機的,只是一組我曾經使用過的服務器,並且存在於某些緩存的PAC文件中)。在中,我將檢查代理的目的地「https://www.secure.com」,我可能會配置IE瀏覽器,因此希望得到「http:// squidserver:18」,相反,它會返回「http :// squidserver:28「(端口18運行NTLM,28無需身份驗證即可運行)。所有的魷魚服務器工作。
  • 這似乎並非是在XP,Vista的只有2003年的問題,和Windows 7
  • 硬編碼的代理服務器在IE瀏覽器始終工作
  • 時間總是可以解決這個問題 - 如果我離開電腦約20或30分鐘後又回來,.NET選取正確的代理設置,就像緩存的PAC腳本過期一樣。
+0

你不能使用UseDefaultProy? – Aliostad 2010-12-13 22:57:34

+0

UseDefaultProxy?無法在線上找到任何東西。 – Dlongnecker 2010-12-13 23:09:04

+0

這有幫助嗎? - > http://stackoverflow.com/questions/1023635/detect-proxy-settings-of-default-web-browser-c/1023978#1023978 – adrianbanks 2010-12-13 23:10:28

回答

4

我找到了解決辦法。

.NET使用「WinHttp Web代理自動發現服務」執行PAC腳本執行,並可能緩存結果。只需停止並重新啓動該服務就可以實現。下面的命令行爲我做了這個。

NET STOP WinHttpAutoProxySvc 
NET START WinHttpAutoProxySvc 

http://wiki.blackviper.com/wiki/WinHTTP_Web_Proxy_Auto-Discovery_Service

我按照安裝調試的詹姆斯·科瓦奇的建議,發現了這個。我已經通過代碼進行了反映,並在發佈問題之前嘗試附加調試器,但無法解釋發生了什麼。暗戰的選擇,我試圖再次調試,發現後幾個小時在線76 _AutoPWebProxyScriptEngine.cs下面的評論,導致我這一發現

 // In Win2003 winhttp added a Windows Service handling the auto-proxy discovery. In XP using winhttp 
     // APIs will load, compile and execute the wpad file in-process. This will also load COM, since 
     // WinHttp requires COM to compile the file. For these reasons, we don't use WinHttp on XP, but 
     // only on newer OS versions where the "WinHTTP Web Proxy Auto-Discovery Service" exists. 
+0

現在這個鏈接已經死了。我發現這個鏈接看起來像相同的信息,但我不會編輯到問題中,因爲我不是100%確定這是否是真的。 http://www.blackviper.com/windows-services/winhttp-web-proxy-auto-discovery-service/ – 2017-04-05 13:17:53

0

我有同樣的問題,我succeded越來越/註冊表中設置代理服務器設置:

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings] 
"ProxyServer"="<your proxy IP address>:8080" 
"ProxyEnable"=dword:00000001 
"ProxyOverride"="<local>" 
+0

感謝您的提示,拉杜。不幸的是,我只是想檢測代理設置,而不是設置它們,並且如果IE設置爲自動檢測代理服務器,則圍繞此密鑰的reg設置不起作用。我寧願不寫我自己的自動代理檢測器。 – Dlongnecker 2010-12-14 17:40:38