允许控制台应用程序访问Windows Authenticated Web应用程序

时间:2015-06-09 15:24:24

标签: c# asp.net asp.net-mvc iis asp.net-web-api

我有一个使用Windows身份验证的MVC Web应用程序。所以我们做System.Web.HttpContext.Current.User.Identity.Name

之类的事情

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

现在,由于控制台应用程序在域控制器/ Active Directory中没有标识,因此使用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
            {

            }
        }

1 个答案:

答案 0 :(得分:6)

使用UseDefaultCredentials:

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

这将使用正在运行的控制台应用程序(可以在“计划任务”设置中指定)。