2012-06-21 114 views
4

我提到的幾個網站,其中有回答這個問題 「遠程服務器返回錯誤:(407)代理身份驗證」 ,但沒有任何幫助。 我寫了一個示例代碼來檢查辦公室中的代理身份驗證。該代碼拋出異常。遠程服務器返回錯誤:(407)代理身份驗證

我的要求: - 驗證一下網站的回報。在辦公室外面,代碼工作正常,但在辦公室中由於代理服務器而引發異常。 當我使用新的NetworkCredential對憑據進行硬編碼時,它工作正常。

int ResponseCode; 
string url = "http://www.msftncsi.com/ncsi.txt"; 
WebRequest request = WebRequest.Create(url); 

request.Credentials = CredentialCache.DefaultCredentials; 
using (WebResponse response = request.GetResponse()) 
{ 

    Stream dataStream = response.GetResponseStream(); 
    StreamReader reader = new StreamReader(dataStream); 
    responseFromServer = reader.ReadToEnd(); 
    ResponseCode = (int)((HttpWebResponse)response).StatusCode; 
    reader.Close(); 
} 

我不想要硬編碼。我在http://social.msdn.microsoft.com/Forums/is/csharpgeneral/thread/c06d3032-dceb-4a1a-bb6a-778fd13a938a中提到了解決方案,但即使這樣也沒有幫助。 我錯過了什麼?

回答

4

這裏有很多東西。您可以嘗試明確設置證書

request.Credentials = new NetworkCredentials(username, password) 

您可能需要指定代理。默認情況下,它使用您的IE代理。你可能不希望出現這種情況

WebRequest webRequest = WebRequest.Create("http://stackoverflow.com/"); 
webRequest.Proxy = new WebProxy("http://proxyserver:80/",true); 
+0

1)它在我明確設置憑據時有效。但是如果我把這個應用程序給另一個用戶,它就不會工作。 – user1473039

+0

我需要有共同的解決方案。 2)指定代理有多大幫助?它會被全球接受嗎(意思是說,我能在任何辦公室網絡中使用這個應用程序)?如果是的話,我很樂意使用它3)我們的程序有幾個檢查來驗證網絡連接。這個代碼是其中一個檢查並且在辦公室失敗。我們需要在不明確指定憑證的情況下運行。 @ fenix2222-我很感謝你的迴應。謝謝。 – user1473039

+0

@ user1473039這意味着您需要讓基礎架構人員訪問外部網站「http://www.msftncsi.com/ncsi.txt」或讓他們創建一個您可以使用的服務帳戶,而不是使用您的憑據。在一天結束時,這是它的工作原理。或者,您可以嘗試模擬應用程序,以便在運行時CredentialCache.DefaultCredentials將使用運行應用程序的人的Windows憑據。 – fenix2222

9

我有同樣的問題,這並獲得成功,我

request.Proxy.Credentials = CredentialCache.DefaultCredentials;

相關問題