[英]Why Am I Getting 401 Unauthorized Response?
我有以下 C# 代码我试图用来从 url 获得响应我可以手动 go。
static void Main(string[] args)
{
Uri theRequestUriString = new Uri("<<<my_url>>>");
var request = WebRequest.Create(theRequestUriString);
request.UseDefaultCredentials = true;
WebProxy myproxy = new WebProxy("<<<my_proxy>>>:<<<my_port>>>", true);
request.Proxy = myproxy;
request.Timeout = Convert.ToInt32(TimeSpan.FromMinutes(5).TotalMilliseconds);
request.Credentials = CredentialCache.DefaultCredentials;
string textResponse;
var resp = request.GetResponse();//*****401 error here*****
using (var sr = new StreamReader(resp.GetResponseStream()))
{
textResponse = sr.ReadToEnd().Trim();
}
}
System.Net.WebException: 'The remote server returned an error: (401) Unauthorized.'
我可以在那里手动 go 但如果我尝试使用此代码会得到 401 Unauthorized。 CredentialCache 不应该处理这个问题吗? 如果不是这种情况,我将在本地使用 Visual Studio。
如果 url 是https://www.yahoo.com那么这工作得很好。
在您的代码中
request.Credentials = CredentialCache.DefaultCredentials
表示您正在使用NTLM 进行 auth 。
Windows 身份验证(以前称为 NTLM,也称为 Windows NT 质询/响应身份验证)是一种安全的身份验证形式,因为用户名和密码在通过网络发送之前经过哈希处理。 当您启用 Windows 身份验证时,客户端浏览器会在与您的 Web 服务器的加密交换中发送密码的强哈希版本。
这基本上是您的 windows 凭证。 当人们在浏览器中打开网站时,他们可以使用传递给网站的 windows 凭据轻松地对网站进行身份验证。
现在关于为什么在运行代码时它不起作用。 我会看到的地方是您是否将内容设置为使用 windows 身份验证。 有几种方法可以做到,其中一些在这里
我还将向您指出这个 SO 答案: 当我从 Visual Studio 运行项目时,Windows 身份验证不起作用
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.