97 messaggi dal 27 marzo 2013
Buona sera,

io vorrei che ogni 24h venga eseguito un codice indipendentemente dal fatto di aprire o meno l'applicazione web.

Ho provato con un WebService ma anche li dovrebbe essere invocata una chiamata.

La cosa migliore sarebbe un timer che continui a girare senza interruzione alcuna, purtroppo però che se chiudo l'applicazione il timer smette di funzionare.

Qualche idea?

Grazie

Andrea
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao Andrea,

menelik86 ha scritto:
se chiudo l'applicazione il timer smette di funzionare.

Sì, per default, IIS termina un'applicazione web dopo un certo periodo di inattività.
Quindi non smette di funzionare subito, ma solo dopo alcuni minuti dall'arrivo dell'ultima richiesta web. Questo è un meccanismo di ottimizzazione di risorse.

Se sei su IIS 8 (o superiore) e hai accesso amministrativo al server, puoi configurare la tua applicazione come "Always Running", in modo che non venga mai scaricata dalla memoria, neanche durante i periodi di inattività.

Qui trovi un articolo molto dettagliato che ti spiega come configurarlo.
https://weblog.west-wind.com/posts/2013/Oct/02/Use-IIS-Application-Initialization-for-keeping-ASPNET-Apps-alive

Oppure, sempre se hai accesso amministrativo al server, puoi configurare un'operazione pianificata di Windows in modo che invii una richiesta web alla tua applicazione. Nel contesto di quella richiesta, esegui il codice. Così non devi tenere timer nell'applicazione.
Ecco un esempio:
http://stackoverflow.com/questions/1987345/recommended-method-for-loading-a-url-via-a-scheduled-task-on-windows#12081686

In alternativa, se non hai accesso amministrativo al server, hai bisogno che l'operazione pianificata o il "timer" risieda all'esterno dell'applicazione web e del server che la ospita. Può trovarsi su un altro tuo server a cui hai accesso, oppure su Azure, che ha un apposito servizio adatto allo scopo.
http://azure.microsoft.com/en-us/pricing/details/scheduler/
E' gratuito se il tuo codice deve andare in esecuzione massimo una volta all'ora. Dici che deve essere eseguito una volta ogni 24h, quindi andrà bene.
Gli fai eseguire una richiesta web alla tua applicazione.

ciao,
Moreno

Enjoy learning and just keep making
97 messaggi dal 27 marzo 2013
Grazie mille Moreno!

Grande come sempre!

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.