我有一个外部站点的 URL 以及用户名和密码。 如果我通过浏览器访问该 URL,则会弹出一个身份验证框。我给它用户名和密码,我就可以访问该页面。
我正在尝试通过代码使用 HttpWebRequest 对象实现相同的目的:
var webRequest = (HttpWebRequest)WebRequest.Create(url);
webRequest.GetResponse()
等等……
在网站所有者为网站添加一些保护并向我提供用户名和密码之前,这曾经有效。 WebRequest 有一个 credentials 属性,我设置如下:
webRequest.Credentials = new NetworkCredential("username", "password")
我也试过:
webRequest.Credentials = new NetworkCredential("username", "password", “url domain”)
这总是会导致错误:
“远程服务器返回错误:(401) 未经授权。”
我是否漏掉了一些明显的东西?
最佳答案
使用 System.Net.NetworkCredential
可能无效,具体取决于资源的身份验证模型。了解远程站点使用的模型会很有帮助。
OpenID、表单例份验证和集成 Windows 身份验证的工作方式各不相同。您可以尝试使用@Christoph 和@Lex 描述的工具推断出他们使用的身份验证方法,或者直接联系远程网站提供商。
如果远程站点使用协商协议(protocol),例如 Kerberos 或 NTLM,那么您遇到的行为确实很奇怪;但是,某些其他协议(protocol)可能需要您以其他方式处理。
关于c# - 为什么在使用正确的凭据发出 HttpWebRequest 时得到 401 Unauthorized?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3307709/