繁体   English   中英

为什么我会收到 401 未经授权的响应?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM