I'm running a web app on IIS 7.5 and it needs to recycle occasionally (otherwise memory usage gets out of handing, something i'm looking into!).
When it recycles, it is effectively not running until another request comes in, which quartz is not going to run.
Is there any way to have IIS automatically bring up 1 work process immediately after recycling the app pool to ensure quartz is always online?
Yes!
http://weblogs.asp.net/scottgu/archive/2009/09/15/auto-start-asp-net-applications-vs-2010-and-net-4-0-series.aspx details it quite nicely, basically you need to:
Edit C:\Windows\System32\inetsrv\config\applicationHost.config to include:
Declare what should be run as the "warm-up" for your site
Configure your application with whatever "warm-up" logic you would like:
Note: If all you need is for the w3wp.exe process to be present I believe only step 1 is necessary. If you also need other items (like certain things to be loaded into memory) then step 2 and 3 would also be used.
Or you could simply modify the "Application_Start" Method in Global.asax to ensure that Quortz is running.
Starting with IIS 8.0, there is an option to simulate a request to the root page, thus a full application initialization: Application Pool advanced settings -> Preload enabled = true.
Of course, startMode should be AlwaysRunning.
More details about how to enable this feature can be found here.
I took a crack at this problem. While Stephen's answer will keep the app running, in a Spring.Net environment, the framework won't kick off and Quartz will not run. I put together an implementation of IProcessHostPreloadClient that will fire off a real request to the application in order to get all the machinery running. This is also posted on my blog: