How do I prevent an ASP.Net site from being unloaded by IIS?
I have what may be the dumbest website in the world - once per hour it wakes up and writes a timestamp to a log file. When the app starts, it says so with a timestamp in the log, and when it dies, same thing.
In IIS I went into its Application Pool and set the Idle Timeout to 0 and set Generate Recycle Event Log Entry > Regular Time Interval to False.
Yet the site still unloads itself about once per day - I get the App Unloading... entry in the log 开发者_StackOverflowand it sits dead until I next visit it.
How do I prevent it from unloading?
(Obviously this site will do more once I get this resolved - for now it's as simple as possible to isolate the problem.)
The application pool has another property that causes it to be automatically recycled every N minutes (defaults to 1740, or every 29 hours.) Make this zero to disable recycling. The property is (on IIS7) under the "Recycling" heading and is called "Regular Time Interval (minutes)"
In addition to @jlew's recommendation, the guidance in this article is important if you're running a background task/timer continuously/periodically in ASP.Net without the install/configuration/maintenance burden of Windows Services and Scheduled Tasks:
http://haacked.com/archive/2011/10/16/the-dangers-of-implementing-recurring-background-tasks-in-asp-net.aspx
It includes a useful helper library, WebBackgrounder, which abstracts the advice in the article to handle graceful shutdown and some of the typical wants/needs of a background task.
It does not configure IIS for you - you'll need to modify the recycling settings yourself.
精彩评论