Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why Application_Start fire multiple times in Global.asax?

I have a Silverlight application hosted in an ASP.NET page. I need to do some processing when the application first starts up and start up some background processes (various periodic checks).

I thought that the Global.asax Application_Start event would be a good place to do this, but I find that the Application_Start fires multiple times which I didn't expect. From what I've read it seems that when the last user logs out of my application their session disappears and IIS unloads my application. When it's next requested it gets loaded again and the Application_Start runs again, which is not really what I want.

Is this the expected behaviour? Is there any way to keep the application loaded and not have it restart like this?

Secondly, I have these periodic background processes that I want to run. Maybe a Windows Service would be a better place for them, but having a timer run from within a static class in my application is convenient. Is there a way I can keep these running even though there are no active users?

like image 961
Craig Shearer Avatar asked Nov 05 '22 16:11

Craig Shearer


1 Answers

I think you are trying to achieve a behaviour which just doesn't fit the web server model well. Many CMSs try to perform periodic tasks etc. by having some user web requests initiate the work, but I have never seen it done with much success.

If you aren't restricted by deployment issues, access rights etc., I would recommend going with the Windows Service approach. Just make sure to incorporate it in your build/deployment process so that that won't become a hazzle.

like image 108
Rune Avatar answered Nov 12 '22 20:11

Rune