我有一个使用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
{
}
}
答案 0 :(得分:6)
使用UseDefaultCredentials:
var client = new WebClient
{
UseDefaultCredentials = true
};
client.DownloadString(address);
这将使用正在运行的控制台应用程序(可以在“计划任务”设置中指定)。