Ho un'attività pianificata di Windows che esegue un processo di importazione del database ogni ora, ma mi piacerebbe che gli utenti fossero in grado di espellerlo fuori programma premendo un pulsante in un dashboard di ASP.net (eseguito in IIS6 su Windows Server 2003).Esecuzione di un'attività pianificata di Windows da ASP.net
I seguenti funziona perfettamente in code-behind ...
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();
... ma solo se l'identità del pool di applicazioni è impostata su Sistema locale (non è l'ideale!). Se lo lascio come servizio di rete, l'attività non viene avviata. Quindi è presumibilmente un problema di autorizzazioni.
C'è un modo in cui ASP.net può avviare un'attività pianificata sul server senza eseguire l'applicazione come sistema locale? Se no, quali buone alternative ci sono?
Aggiornamento: se nessuno sa su SO, credo che non è possibile, così io andrò con la mia idea di avere la mia applicazione web le richieste di scrittura a una tabella di database (raddoppio come un registro di controllo) e la creazione di una seconda attività per sondare quel tavolo e dare il via al compito principale.
Perché non stai chiamando ciò che questa attività chiamerà nella tua webapp? Perché vuoi eseguire l'attività, non la destinazione dell'attività? – Kousha
Buona domanda. 1 Ho bisogno che l'attività venga eseguita come utente specifico e 2 Non deve essere eseguita contemporaneamente all'attività schedulata oraria, che Windows Scheduler non avvia in modo conveniente se l'attività è stata avviata manualmente. Questa non è un'opzione che ho esplorato in molti dettagli, però. – Chris