130 messaggi dal 26 agosto 2009
Buongiorno,
c'è qualche modo per schedulare un processo ??
ovvero vorrei mandare in automatico un Report che si crea all'apertura di una pagina WEB.

Grazie,
Claudio
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao Claudio,
per "schedulare" intendi eseguire del codice in maniera differita, ovvero dopo un tot di secondi/minuti da quando la pagina web è stata chiamata?

In questo caso puoi usare Hangfire, che ti permette di accodare un job per l'esecuzione, che può essere immediata o avvenire più in là nel tempo. L'accodamento è un'operazione immediata e quindi la richiesta corrente non dovrà attendere oltre.

Utile se non vuoi far attendere all'utente che un'operazione di lunga durata, come la creazione di un report ed il successivo invio via email, abbia termine.

Leggi qui, abbiamo parlato un po' di esecuzione di processi di lunga durata. C'è anche un progetto demo che puoi scaricare.
http://forum.aspitalia.com/forum/post/412306/DataSet.ReadXml-Valori-Consentiti.aspx?PageIndex=3#412615

ciao,
Moreno

Enjoy learning and just keep making
130 messaggi dal 26 agosto 2009
Grazie mille per la risposta, ma io intendevo che alle 23 parta in automatico un processo.
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao, prego Claudio. Con Hangfire lo puoi fare.
Imposti un job ricorrente alle 23 di ogni giorno che ti invoca Process.Start("tuoeseguibile.exe").WaitForExit().

Esempio non testato, giusto per rendere l'idea.
RecurringJob.AddOrUpdate(() => Process.Start("tuoeseguibile.exe").WaitForExit(), "0 23 * * *");


La questione è: perché lo vuoi lanciare da un'applicazione web anziché predisporre nel server un'operazione pianificata di Windows?

Se lo lanci da un'applicazione web ricorda che se l'applicazione è stata "spenta" da IIS per inattività, il job non partirà. Devi configurare la modalità Always Running dalla console di IIS. Qui altre indicazioni:
http://docs.hangfire.io/en/latest/deployment-to-production/making-aspnet-app-always-running.html

ciao,
Moreno
Modificato da BrightSoul il 07 luglio 2016 23.42 -

Enjoy learning and just keep making
130 messaggi dal 26 agosto 2009
Rigrazie per la risposta.
Lo lancio con un applicativo WEB perchè con IE tramite una pagina aspx creo un Report e sempre tramite la pagina lo invio.
Ho creato un'attività pianificata che apre una pagina IE.
Per info funziona solo con Windows 10

Non saprei come fare altrimenti.

Questo è il BAT:

@echo off
Title Start and Kill Internet Explorer
Mode con cols=75 lines=5 & color 0B
echo(
echo Launching Internet Explorer ...
Start "" "%ProgramFiles%\Internet Explorer\iexplore.exe" "http://mywebserver/Report.aspx"
:: Sleep for 10 seconds, you can change the SleepTime variable
set SleepTime=40
Timeout /T %SleepTime% /NoBreak>NUL
Cls & Color 0C
echo(
echo Killing Internet Explorer Please wait for a while ...
Taskkill /IM "iexplore.exe" /F
Modificato da claudiomarchetti il 12 luglio 2016 11.46 -
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao Claudio,
non hai bisogno di aprire internet explorer ma ti basta lanciare un comando che effettui una richiesta web. Ci sono vari modi in cui puoi farlo:

Scegli l'opzione che ti sembra più appropriata, sono tutte e tre percorribili. Nessuna prevede l'apertura di Internet Explorer 10 (perché non è necessario, a meno che tu non stia attivando la generazione di report con del javascript).

ciao,
Moreno
Modificato da BrightSoul il 13 luglio 2016 07.42 -

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.