Ha ASP.NET-t csinálsz, mindenképp IIS-t fogod használni
Ha ütemezett feladatot szeretnél hozzáadni a ASP.net alkalmazásodhoz, egy szálat kell használnod a folyamatos ütemezett számítások elvégzéséhez
Tegyük fel, hogy hozzáadunk Quartz.NET keretrendszert a ASP.Net alkalmazásunkhoz, és a konfiguráció rendben van.
Ezen az oldalon nagyon kevés látogató van, és most már csak néhányan használják munka közben, de másnap átmentem, és láttam, hogy a háttérben történő ütemezés szálai és számítási feladatai megálltak, és ha megfogod Application_End eseményt, azt fogod látni, hogy ez az esemény ténylegesen be volt hívva.
Akkor valami gond lehet az IIS alkalmazáskészlet újrahasznosítási mechanizmusával. Mivel az IIS alapértelmezett beállítása az, hogy ha egy oldal alkalmazási poolját egy ideig nem érik el vagy kérik, az IIS automatikusan visszaszerezi a programpoolt, és leállítja a folyamatot. A folyamat szálai biztosan nem fogják túlélni.
Ugyanakkor beállíthatjuk az alkalmazáskészlet paramétereit úgy, hogy ne csak automatikusan újrahasznosítsák őket (bizonyos helyzetek elkerülhetetlenek, például hot-deployd oldalak, túl sok hiba stb.)
Keresd meg az oldal által használt programkészletet az IIS-ben, és kattints a "Advanced settings..." gombra.
Változtasd meg a következő beállításokat a megnyitott listán:
Recovery – A fix időintervallum (percek) 0-ra változott
- A virtuális/dedikált memóriakorlát (KB) 0-ra módosított
Folyamatmodell – Az alapjárati időkérés (perc) 0-ra változik
Így a programpool nem kerül automatikusan újrahasznosításra, és néhány egyszerű számítógépes szál a háttérben normálisan működik |