Se stai facendo ASP.NET, userai sicuramente IIS
Se vuoi aggiungere un compito programmato alla tua applicazione ASP.net, devi usare un thread per eseguire i calcoli programmati senza sosta
Poi supponiamo che aggiungiamo Quartz.NET framework alla nostra applicazione ASP.Net, e la configurazione e così via vanno bene.
Questo sito ha pochissime visite, e ora solo poche persone lo usano quando sono al lavoro, ma il giorno dopo sono andato da me e ho visto che i thread e i compiti di calcolo della pianificazione in background erano stati fermati, e se prendi Application_End evento, scoprirai che questo evento è stato effettivamente chiamato.
Allora deve esserci qualcosa che non va nel meccanismo di riciclo del pool di applicazioni di IIS. Perché l'impostazione predefinita di IIS è che, se il pool di applicazioni di un sito non viene consultato o richiesto per un certo periodo di tempo, IIS riprenderà automaticamente il pool di programmi e interromperà il processo. I fili in quel processo sicuramente non sopravviveranno.
Tuttavia, possiamo impostare i parametri del pool di applicazioni in modo che non vengano semplicemente riciclati automaticamente (alcune situazioni sono inevitabili, come siti hot-deploy, un numero eccessivo di errori, ecc.)
Trova il pool di programmi utilizzato da questo sito in IIS e clicca su "Impostazioni avanzate..."
Modifica le seguenti impostazioni nella lista che si apre:
Recupero - Intervallo di tempo fisso (minuti) cambiato a 0
- Limite di memoria virtuale/dedicata (KB) cambiato a 0
Modello di processo - Timeout inattivo (minuti) viene cambiato a 0
In questo modo, il pool di programmi non verrà riciclato automaticamente e alcuni semplici thread di calcolo in background funzioneranno normalmente |