【发布时间】:2011-04-03 13:00:01
【问题描述】:
我正在尝试使用 .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。但显然它没有发生。
【问题讨论】:
-
谢谢,将 PreAuthenticate 设置为 true 有助于解决我的问题。
标签: c# windows-authentication webrequest