【发布时间】:2013-04-27 23:25:36
【问题描述】:
我有一个 Windows 计划任务,它每小时运行一个数据库导入过程,但我希望用户能够通过点击 ASP.net 仪表板中的按钮(在 IIS6 中运行在 Windows Server 2003 上)。
以下内容在代码隐藏中完美运行...
var proc = new Process
{
StartInfo =
{
UseShellExecute = false,
FileName = @"C:\Windows\System32\schtasks.exe",
Arguments = "/run /tn Loader",
RedirectStandardError = true,
RedirectStandardOutput = true,
CreateNoWindow = true
}
};
proc.Start();
proc.WaitForExit();
...但前提是应用程序池标识设置为本地系统(不理想!)。如果我将其保留为网络服务,则任务不会启动。所以大概是权限问题。
有没有办法 ASP.net 可以在不将应用程序作为本地系统运行的情况下在服务器上启动计划任务?如果没有,有什么好的选择?
更新:如果 SO 上没有人知道,我想这是不可能的,所以我会按照我的想法让我的 Web 应用程序将请求写入数据库表(兼作审计日志)和创建第二个任务来轮询该表并启动主要任务。
【问题讨论】:
-
为什么你不调用这个任务将在你的 webapp 中调用的东西?为什么要运行任务,而不是任务的目标?
-
好问题。 1 我需要以特定用户的身份运行该任务,以及 2 它不能与每小时计划的任务同时运行,如果手动启动了任务,Windows 计划程序就不会启动。不过,这不是我详细探讨过的选项。
标签: c# asp.net iis scheduled-tasks windows-server-2003