获取当前凭据

      由于业务实现上的需要,在自定义的Windows服务中发起对IIS站点下某aspx页面的访问请求,代码很简单,只有几句:

    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(WebSiteUrl);
    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    Stream stream = response.GetResponseStream();

      在控制台程序中已测试成功,然而在windows服务程序中运行时,一直捕获到IIS返回"401 未经授权”的错误。下面是环境配置情况:

      1、IIS站点。使用的是windows身份认证,允许所有用户访问,但禁用了匿名访问;

      2、Windows服务使用域管理员身份运行;

      尝试了很久无果。后来想,是否windows服务中发起http请求时不会自动发送当前的windows凭据而导致无法访问?好比是,方法中的参数允许任意整型值,但不允许根本没有值,于是乎,找了一些资料用于获取当前凭据,在下面的帖子中找到了答案:

     HOW TO  将当前凭据传递到 ASP.NET Web 服务

     关键的代码只有一行:

     myProxy.Credentials = System.Net.CredentialCache.DefaultCredentials

     至此,问题解决。

posted @ 2011-08-13 16:01  细雨黄昏  阅读(487)  评论(0编辑  收藏  举报