c# - 向需要 Windows 身份验证的网页发出 Web 请求

标签 c# windows-authentication webrequest

我正在尝试使用 .net 中的 WebRequest 类向网页发出请求。我试图读取的 url 需要 Windows 身份验证,因此我得到了未经授权的异常。如何将 Windows 凭据传递给此请求,以便它可以进行身份​​验证。

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create( "http://myapp/home.aspx" );

request.Method = "GET";
request.UseDefaultCredentials = false;
request.PreAuthenticate = true;
request.Credentials = new NetworkCredential( "username", "password", "domain" );

HttpWebResponse response = (HttpWebResponse)request.GetResponse(); // Raises Unauthorized Exception

this.Response.Write( response.StatusCode );

以上代码返回以下错误。

System.Net.WebException: The remote server returned an error: (401) Unauthorized.

我在检查异常详细信息时注意到一件事是我尝试访问的 url 正在重定向到另一个 url,这提示我提供 NT 登录详细信息。我相信凭据也应该转发到这个 url。但显然它没有发生。

最佳答案

你应该使用 Credentials属性将 Windows 凭据传递给 Web 服务。

如果您希望将当前 Windows 用户的凭据传递给该服务,则

request.Credentials = CredentialCache.DefaultCredentials;

应该可以解决问题。否则使用 NetworkCredential如下:

request.Credentials = new NetworkCredential(user, pwd, domain);

关于c# - 向需要 Windows 身份验证的网页发出 Web 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3562979/

相关文章:

c# - 使用 C# 使用 NAudio 录音

c# - 如何浏览主机上的所有 WCF 服务?

c# - Thread.Start(WebRequest.GetResponse) 与 WebRequest.BeginGetResponse

c# - 尝试使用 .NET WebClient 下载响应时出现 "remote name could not be resolved"异常

c# - 是什么导致这个 HTTPS WebRequest 即使在浏览器中工作也会超时?

c# - 如何在cshtml页面中使用css自定义样式?

c# - 如何将 C++ 数字格式转换为 C# 数字格式?

asp.net - Angular 2 应用程序和 ASP.Net Web API 中的 Windows 身份验证

asp.net-mvc - ASP.NET MVC Windows 身份验证以不同用户身份登录

ios7 - Windows 身份验证和 iOS7