У меня есть запланированная задача Windows, которая запускает процесс импорта базы данных каждый час, но я бы хотел, чтобы пользователи могли отключить ее вне графика, нажав кнопку в панель ASP.net (работает в IIS6 на Windows Server 2003).Запуск запланированной задачи Windows из 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 не знает, я думаю, что это невозможно, поэтому я пойду с моей идеей о том, чтобы мое веб-приложение записывало запросы в таблицу базы данных (дублирование в качестве журнала аудита) и создавая вторую задачу опросить этот стол и начать основную задачу.
Почему вы не вызываете то, что эта задача вызовет в вашем webapp? Почему вы хотите запустить задачу, а не цель задачи? – Kousha
Хороший вопрос. 1 Мне нужна задача для запуска как конкретный пользователь, а 2 она не должна запускаться одновременно с почасовой запланированной задачей, которую Windows Scheduler удобно не запускает, если задача вручную была запущена. Однако это не вариант, который я подробно рассмотрел. – Chris