【发布时间】:2015-08-24 12:37:19
【问题描述】:
我有一个使用 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
{
}
}
【问题讨论】:
-
您将其作为批处理作业运行,这是否意味着计划任务?如果是这样,您使用什么凭据来运行它。它是应该有权访问您的 MVC 帐户的域帐户吗?
-
是的,它在服务器上作为计划任务运行。它使用什么帐户并不重要。它所需要的只是能够调用该 url。
-
如果您尝试访问的网页使用 Windows 身份验证,那么您的控制台应用程序在什么凭据下运行绝对重要。
-
另外,请发布更完整的代码示例,说明您的应用如何创建和执行 HTTP 请求。
-
@MikeC 添加了客户端代码。它只有 1 行代码。这就是它真正需要的一切。
标签: c# asp.net asp.net-mvc iis asp.net-web-api