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