2012-07-24 150 views
6

我有一个ASP.NET MVC 4 Web服务。在我的开发盒上,我运行IIS Express 7.5,所以我们调用localhost:port。我已将其设置为使用Windows身份验证并关闭匿名。HttpWebRequest + Windows验证 - NetworkCredential不起作用

在我的客户,如果我设置

HttpWebRequest.Credentials = CredentialCache.DefaultNetworkCredentials; 

它的工作原理。但如果我将凭据设置为我的其他Windows域帐户,

HttpWebRequest.Credentials = new NetworkCredential("lpuplett", "catsGoW00f", "ntdom")); 

然后我得到一个401未经授权。我误会了什么;这应该工作吗?

我已经尝试将凭据添加到CredentialCache对象并设置缓存,同时穿过我的手指,也用我的眼睛紧闭,真的很希望。

感谢,

卢克

解决

花了3个小搜索和发布自己的问题后,我降落在了答案,在这里值得信赖的SO:

Domain credentials for a WebClient class don't work

谢谢你的好评;-)

回答

5

从联重复问题评论:

你需要指定的认证类型。当服务器 使用NTLM身份验证向客户端提出质询时, ICredentials.GetCredential方法将在具有authType =“NTLM”的 WebClient.Credentials上调用。如果您使用 WebClient.Credential = new NetworkCredential(...)作为未验证 指定类型,则客户端将无法正确响应。 CredentialCache已经实现了这个功能。 - 达林 Dimitrov 09年11月5日在14:57