2013-03-19 118 views
3

我目前以下一些與此類似:C#HttpWebRequest的使用代理憑據不傳遞憑據到代理服務器

HttpWebRequest myWebRequest = (HttpWebRequest) WebRequest.Create("http://www.microsoft.com"); 
IWebProxy proxy = myWebRequest.Proxy; 
Uri newUri = new Uri(proxyAddress); 
myProxy.Address = newUri; 
... (setting of username/password for proxy) 
myProxy.Credentials = new NetworkCredential(username, password); 
myWebRequest.Proxy = myProxy; 

HttpWebResponse myWebResponse = (HttpWebResponse) myWebRequest.GetResponse(); 

我從需要驗證URL的可接觸的IIS 7.5託管的應用程序運行的代碼在一個過程繼續之前。由於該服務不應該訪問外部世界,因此我需要使用具有我們IT部門給予我的憑證的特定代理服務器。

不幸的是,無論我嘗試什麼(在app.config中有system.net/default代理,有相關的模塊類來創建url和憑證,或類似上面的代碼)),代理服務器都沒有得到這些憑據傳遞給它。

有什麼我可能錯過了?我已經嘗試在調試模式下從VS2010 Web應用程序運行此應用程序,該應用程序使用默認應用程序池標識從IIS運行。和我們的QA環境中的服務器一樣,並且沒有任何更改 - 它根本不使用代理,或者只是不發送憑證。

我也試過將PreAuthenticate = trueUseDefaultCredentials設置爲true AND k,沒有變化。

關於我失蹤的任何想法?

回答

1

編輯:對不起,誤解你的問題在第一 - 以下更正答案:

我會嘗試創建一個新的WebProxy對象,設置它的憑據,然後將其設置爲您的請求的代理(而不是獲取現有的代理來自請求的對象並對其進行修改):

HttpWebRequest myWebRequest = 
    (HttpWebRequest) WebRequest.Create("http://www.microsoft.com"); 
IWebProxy proxy = new WebProxy(proxyAddress); 
string proxyUsername = @"foo"; 
string proxyPassword = @"bar"; 
proxy.Credentials = new NetworkCredential(proxyUsername, proxyPassword); 
myWebRequest.Proxy = proxy;