When to use Application_Start vs Init in Global.asax?
asp.netGlobal Asaxasp.net Problem Overview
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.
asp.net Solutions
Solution 1 - asp.net
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?
Solution 2 - asp.net
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.