我有一个Windows定时任务,每小时运行一次数据库导入过程,但我希望用户能够通过在运行在Windows Server 2003上的IIS6中的ASP.net仪表板中点击按钮来启动它。
以下代码在后台完美地工作...
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应用程序将请求写入数据库表(同时作为审计日志),并创建第二个任务来轮询该表并启动主任务。