Keeping an ASP.NET website and its application pool always running — regardless of the app pool, website, IIS, or the whole server restarting. The usual reasons: code that needs to initialize at application startup (Global.asax logic, warming up pages), or an in-memory timer that needs to keep running on schedule without the app going cold from idling or recycling.
Since IIS Application Initialization became available, this isn’t complicated. Three prerequisites:
- Application Initialization feature — installable as part of IIS features. Gives IIS the ability to automatically probe your site (like a visitor hitting a page) to keep it active and warm, and can serve a splash page while starting up.

- Preload Enabled — with this set true, IIS simulates a request the moment the worker process (w3wp.exe) starts, warming the app up. This dummy hit won’t show in the IIS log.

- Application Pool Start Mode: AlwaysRunning — spawns a fresh worker process whenever IIS starts, after an idle timeout, or during a recycle, rather than waiting on the next real request.

With those three in place, the site stays warm and running even without real visitor traffic.
Other considerations to keep your website or application running properly
Application Pool Idle Time-out — setting this to 0 sounds like the obvious “always running” fix, but if the app has a memory leak, you’ll find out the hard way when memory maxes out instead of the pool recycling cleanly.

Application Pool Recycling — disabling all recycling options feels like a complete solution, but memory leaks are still a real risk if the app isn’t well managed. For memory-leak control, it’s often better to use recycling deliberately, and make sure your code properly anticipates being interrupted for it — reinitialize on startup, save state before shutdown.

Get that right, and you’ve got a properly managed, genuinely always-running site.
Feel free to browse the rest of the Tech pillar too.


