I am wondering under what circumstances I should be putting application initialisation code in Application_Start() vs Init() in my Global.asax file?
The distinction between the two doesn’t seem very obvious to me, other than Application_start gets called first, then Init().
- Why would I use one over the other?
- Does it really make a difference?
- What changes in the application state
between the two events?
So far the only real pointer I can find is that IHttpModule only has an Init() method, so if what I’m doing may at some point be better suited to implement IHttpModule I should use the Init() method of Global.asax, if nothing else for consistency.
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
From the MSDN docs:
The Application_Start and Application_End methods are special methods that do not represent HttpApplication events. ASP.NET calls them once for the lifetime of the application domain, not for each HttpApplication instance.
Init:
Called once for every instance of the
HttpApplication class after all
modules have been created.
UPDATE: if you need to make sure a certain code is called only once in the app. lifecycle, Application_Start is a better solution. Examples: configuring log4net?
Method 2
Yes
There are differences between them. Application_Start() event is called just one time while Init() method is called on each time when instance of the application is created.
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0