2015-10-07 65 views
2

我正在開發需要與某些Web服務進行通信的Windows WPF應用程序。我現在需要爲坐在代理之後的特定用戶實現支持。在一個特定的情況下,用戶自動與WPAD通過Internet Explorer設置,獲取代理服務器設置:通過在WPAD中定義的代理與Web服務進行通信

enter image description here

我經歷過許多文章犁關於代理,但我根本無法得到它的工作。以下是我已經試過:

WebRequest request = WebRequest.Create("http://www.google.com"); 
request.Proxy = WebRequest.GetSystemWebProxy(); 
var response = (HttpWebResponse)request.GetResponse(); 

爲WebRequest.GetSystemWebProxy()文檔說:

「返回與 當前模擬用戶的Internet Explorer設置配置了代理。」

它似乎從Internet Explorer中獲取設置。當我調試和檢查代理我看到它檢測到WPAD文件:

enter image description here

但它似乎沒有反正工作。當的GetResponse()被調用時失敗,出現以下異常消息:

「連接嘗試失敗,因爲連接的方沒有 一段時間後正確響應或已建立的連接 失敗,因爲連接的主機沒有迴應「

據我所知,我不應該需要在我的app.config文件中有任何東西。那麼我錯過了什麼?

回答

0

您需要設置代理元素在你的app.config文件:

<system.net> 
    <defaultProxy enabled="true" useDefaultCredentials="true" > 
     <proxy autoDetect="true" scriptLocation="http:/wpad.dat"/> 
    </defaultProxy> 
</system.net> 

https://msdn.microsoft.com/en-us/library/sa91de1e(v=vs.110).aspx

做的另一種方式,但它被認爲是遺產是:

WebProxy proxyObject = new WebProxy("http://proxyserver:80/",true); 
WebRequest request = WebRequest.Create("http://www.google.com"); 
request.Proxy = proxyObject; 
+0

是那真的有必要嗎?因爲它看起來像GetSystemWebProxy()發現了wpad.data文件? – sundown

相關問題