我正在尝试使用 .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/