6

我正在尝试使用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

它要么太长,太复杂,我无法理解,要么不起作用。我是新手,希望在这里得到一些直截了当的答案。

4

1 回答 1

1

如果您使用的是基本身份验证,那么这将不起作用。看到这个问题:HttpWebRequest with basic authentication failed with 401 errr 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

于 2013-07-30T09:35:04.923 回答