When to use Application_Start vs Init in Global.asax?

asp.netGlobal Asax

asp.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.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionroryfView Question on Stackoverflow
Solution 1 - asp.netIgor BrejcView Answer on Stackoverflow
Solution 2 - asp.netAbid MahmoodView Answer on Stackoverflow