我试图使用 HttpWebRequest 请求需要Windows身份验证的网址,我正在使用
request.Credential = New NetworkCredential("username", "password");
一切正常,直到我决定不硬编码用户名和密码,然后切换到
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 :(得分: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