我试图使用HttpWebRequest请求一个需要windows身份验证的url,我使用的是
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.
它要么太长太复杂,我无法理解,要么就不起作用。我是新手,希望能在这里得到一些直接的答案。
如果您使用的是基本身份验证,那么这将不起作用。请参阅此问题:具有基本身份验证的HttpWebRequest失败,DefaultNetworkCredentials 为401 erorr
微软的这篇文章指出,DefaultCredentials只适用于NTLM、协商和基于Kerberos的身份验证。http://msdn.microsoft.com/en-us/library/system.net.credentialcache.defaultcredentials.aspx
为了提供信息,本文简要介绍了身份验证方法:http://msdn.microsoft.com/en-us/library/ms789031.aspx