When to use Application_Start vs Init in Global.asax?

asp.net, global-asax

Solution

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?

Problem

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.

Original source