允许控制台应用程序访问Windows认证的web应用程序

本文关键字:应用程序 认证 web Windows 访问 控制台 | 更新日期: 2023-09-27 17:54:46

我有一个使用Windows身份验证的MVC web应用程序。比如System.Web.HttpContext.Current.User.Identity.Name

现在我正在编写一个控制台应用程序,它将作为批处理作业的一部分运行。所有这个控制台应用程序需要做的就是调用主web应用程序中的ActionResult,然后执行一些维护任务。

现在,由于控制台应用程序在域控制器/活动目录中没有身份,使用System.Net.WebClient().DownloadString()的调用不断抛出401错误。

我的问题是,有没有一种方法允许这个应用程序在主web应用程序中调用这个链接,而不必在web.config/IIS中禁用WindowsAuthentication ?

欢迎提出任何意见/建议。

所有控制台应用程序包含的是

static void Main(string[] args)
        {
            try
            {
                new System.Net.WebClient().DownloadString(System.Configuration.ConfigurationSettings.AppSettings["http://foo.com/"]);
            }
            catch
            {
            }
        }

允许控制台应用程序访问Windows认证的web应用程序

Use UseDefaultCredentials:

        var client = new WebClient
                     {
                         UseDefaultCredentials = true
                     };
        client.DownloadString(address);

this将使用控制台应用程序的运行状态(可以在计划任务设置中指定)。