Jeśli robisz ASP.NET, na pewno użyjesz IIS
Jeśli chcesz dodać zaplanowane zadanie do swojej aplikacji ASP.net, musisz użyć wątku do wykonywania zaplanowanych obliczeń bez przerwy
Załóżmy, że dodajemy Quartz.NET framework do naszej ASP.Net aplikacji, a konfiguracja i tak dalej są w porządku.
Ta strona ma bardzo niewiele odwiedzin i teraz tylko kilka osób korzysta z niej w pracy, ale następnego dnia przyszedłem i zobaczyłem, że wątki i zadania obliczeniowe związane z planowaniem w tle zostały zatrzymane, a jeśli pobierzesz Application_End wydarzenie, zobaczysz, że to wydarzenie faktycznie zostało wywołane.
To musi być coś nie tak z mechanizmem recyklingu puli aplikacji w IIS. Ponieważ domyślne ustawienie IIS jest takie, że jeśli pula aplikacji w danym miejscu nie jest dostępna lub żądana przez pewien czas, IIS automatycznie odzyskuje pulę programów i zatrzymuje proces. Wątki w tym procesie na pewno nie przetrwają.
Możemy jednak ustawić parametry puli aplikacji tak, aby nie były one automatycznie powtarzane (niektóre sytuacje są nieuniknione, takie jak gorąco wdrażane lokalizacje, nadmierna liczba błędów itp.)
Znajdź pulę programów używaną przez tę stronę w IIS i kliknij "Zaawansowane ustawienia..."
Zmień następujące ustawienia na listie, która się otwiera:
Odzyskiwanie - Stały interwał czasu (minuty) zmieniony na 0
- Limit pamięci wirtualnej/dedykowanej (KB) zmieniony na 0
Model procesu – Czas bezczynności (minut) zostaje zmieniony na 0
W ten sposób pula programów nie będzie automatycznie recyklingowana, a niektóre proste wątki obliczeniowe w tle będą działać normalnie |