Hem*_*jak 35 c# webrequest windows-authentication
我正在尝试使用.net中的WebRequest类向网页发出请求.我尝试阅读的网址需要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 );
Run Code Online (Sandbox Code Playgroud)
上面的代码返回以下错误.
System.Net.WebException: The remote server returned an error: (401) Unauthorized.
Run Code Online (Sandbox Code Playgroud)
检查异常细节时,我注意到一件事是我尝试访问的URL是重定向到另一个提示我提供NT登录详细信息的URL.我相信凭据也应该转发到此URL.但显然它没有发生.
Vin*_*ayC 40
您应该使用Credentials属性将Windows凭据传递给Web服务.
如果您希望将当前Windows用户的凭据传递给该服务
request.Credentials = CredentialCache.DefaultCredentials;
Run Code Online (Sandbox Code Playgroud)
应该做的伎俩.否则使用NetworkCredential如下:
request.Credentials = new NetworkCredential(user, pwd, domain);
Run Code Online (Sandbox Code Playgroud)
我正在尝试访问链接A传递Windows凭据.链接A然后自动重定向到链接B但不传递我提供的Windows凭据.因此错误.我确实request.AutoRedirect = false,并且每当我在标题中获得位置时循环,即每次通过Windows凭据时我都会手动重定向.
这对我有用:)
要对WebService进行身份验证,请使用DefaultNetworkCredentials而不是DefaultCredentials:
request.Credentials = CredentialCache.DefaultNetworkCredentials;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
67561 次 |
最近记录: |