Mam zaplanowane zadanie systemu Windows, które uruchamia proces importowania bazy danych co godzinę, ale chciałbym, aby użytkownicy mogli go wyłączyć poza harmonogramem, naciskając przycisk pulpit ASP.net (uruchomiony w IIS6 na Windows Server 2003).Uruchamianie zadania Zaplanowane w systemie Windows z programu ASP.net
Poniższe działa idealnie w code-za ...
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();
... ale tylko wtedy, gdy tożsamość puli aplikacji jest ustawiony na system lokalny (nie idealne!). Jeśli zostawiam go jako usługę sieciową, zadanie się nie rozpocznie. Jest to przypuszczalnie problem z uprawnieniami.
Czy istnieje sposób, aby program ASP.net mógł uruchomić zaplanowane zadanie na serwerze bez uruchamiania aplikacji jako system lokalny? Jeśli nie, jakie są dobre alternatywy?
Aktualizacja: jeśli nikt na SO wie, myślę, że nie jest możliwe, więc pójdę z moim pomysłem posiadania mojej aplikacji sieci web żądania zapisu do tabeli bazy danych (podwojenie jako dzienniku kontroli) oraz stworzenie drugiego zadania sondować ten stół i rozpocząć główne zadanie.
Dlaczego nie wywołujesz tego, co to zadanie wywoła w Twojej aplikacji internetowej? Dlaczego chcesz uruchomić zadanie, a nie cel zadania? – Kousha
Dobre pytanie. 1 Potrzebuję, aby zadanie działało jako określony użytkownik, i 2 To nie może działać w tym samym czasie, co zaplanowane na godzinę zadanie, do którego Windows Scheduler wygodnie się nie uruchamia, jeśli zadanie zostało uruchomione ręcznie. Nie jest to jednak opcja, którą zbadałem bardzo szczegółowo. – Chris