HttpWebRequest DefaultNetworkCredentials给出错误401

时间:2013-07-30 09:24:03

标签: c# asp.net httpwebrequest credentials networkcredentials

我试图使用 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

要么太长也太复杂,我无法理解或无效。我是新手,希望能在这里得到一些直接的回答。

1 个答案:

答案 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