CSharp Tips:应用程序访问集成Windows认证的站点

王朝c#·作者佚名  2006-12-17
宽屏版  字体:  |  |  | 超大  

问题从事过Web oRequest = (System.Net.HttpWebRequest) WebRequest.Create(uri);

if (oRequest != null)

{

// send request

oRequest.ProtocolVersion = HttpVersion.Version11;

oRequest.Method = @"GET";

oResponse = (System.Net.HttpWebResponse) oRequest.GetResponse(); }

这段代码请求允许匿名访问的站点的时候没有任何问题,但是当站点关闭匿名访问的开关的时候,就会收到上面提到的401的错误。因为我们并没有指定访问该站点的用户ID。 oRequest.Credentials = CredentialCache.DefaultCredentials;

CredentialCache.DefaultCredentials记录了应用程序当前运行上下文中的认证信息,但是你无法从中读取用户名、口令和登录域(都是空字符串),不过确确实实记录了当前登录用户的信息,这也是Windows的保护机制吧。 oCredential = new NetworkCredential(sUser,sPwd,sDomain);

oRequest.Credentials = oCredential.GetCredential(new Uri(uri),String.Empty); oRequest = (System.Net.HttpWebRequest) WebRequest.Create(uri);

if (oRequest != null)

{

// send request

oRequest.ProtocolVersion = HttpVersion.Version11;

oRequest.Method = @"GET";

if (sUser != String.Empty)

{

oCredential = new NetworkCredential(sUser,sPwd,sDomain);

oRequest.Credentials = oCredential.GetCredential(new Uri(uri),String.Empty);

}

else

{

oRequest.Credentials = CredentialCache.DefaultCredentials;

}

oResponse = (System.Net.HttpWebResponse) oRequest.GetResponse(); }

这样只要当前登录用户或者你提供帐号和口令的用户通过任何,你就可以像普通情况下一样访问Web Site上的资源了。当然如果提供了错误的用户名或者口令的话,不要来找我。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有