2013-07-30 50 views
4

我試着去請求需要使用HttpWebRequest的 Windows身份驗證的URL,我用HttpWebRequest的DefaultNetworkCredentials給錯誤401

request.Credential = New NetworkCredential("username", "password"); 

一切工作找,直到我決定不hardcord的用戶名和密碼,開關到

request.Credential = CredentialCache.DefaultNetworkCredentials; 

然後我得到了401未經驗證的錯誤。 我查了我的用戶有

WindowsIdentity.GetCurrent(); 

它正確地返回自己的用戶名,但

CredentialCache.DefaultNetworkCredentials; 

返回我空字符串爲用戶名,域......幾乎一切都是空字符串.. 太糟糕HttpWebRequest.Credential預計ICredential意味着我不能設置WindowsIdentity.GetCurrent()它。

有無論如何,我可以通過我目前的登錄用戶到HttpWebRequest.Credential

CredentialCache.DefaultNetworkCredentials;正確的方法?或者我只是缺少一些設置?

我已經閱讀了一些像這樣的文章 http://msdn.microsoft.com/en-us/library/ms998351.aspx

這對我來說太長或太複雜,無法理解或無法正常工作。我是新來的,希望能在這裏得到一些直接的答案。

+0

我知道這不是一個答案,但我有兩個問題:你甚至不需要設置任何憑據?簡單地將包含用戶名和密碼的變量(從哪裏可以獲得哪些值)傳遞給NetworkCredential構造函數而不是將它們硬編碼爲字符串會出現什麼問題? –

+0

因爲我沒有用戶名和密碼,並且用戶對他們提出的每一個請求都不滿意,他們不得不輸入用戶名和密碼,我以前在會話的登錄屏幕上存儲了用戶名和密碼,但我的老闆對此並不滿意,他認爲這對安全來說不是一個好習慣。所以,在這裏,我問這個問題 –

+1

我有這個完全相同的問題......呃 –

回答

1

如果您使用基本身份驗證,那麼這將不起作用。看到這個問題:HttpWebRequest with basic authentication fails with 401 erorr for DefaultNetworkCredentials

而這篇微軟文章指出,DefaultCredentials只適用於NTLM,協商和基於Kerberos的身份驗證。 http://msdn.microsoft.com/en-us/library/system.net.credentialcache.defaultcredentials.aspx

有關信息的目的,這是一篇文章,解釋短期中的身份驗證方法:http://msdn.microsoft.com/en-us/library/ms789031.aspx