Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

When to use Application_Start vs Init in Global.asax?

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.

like image 463
roryf Avatar asked Apr 06 '09 10:04

roryf


People also ask

What is Application_Start in global ASAX?

Application_Start. The Application_Start event is fired the first time when an application starts. Session_Start. The Session_Start event is fired the first time when a user's session is started. This typically contains for session initialization logic code.

What is Application_Start?

Application_Start. Called when the first resource (such as a page) in an ASP.NET application is requested. The Application_Start method is called only one time during the life cycle of an application. You can use this method to perform startup tasks such as loading data into the cache and initializing static values.

When should I use global ASAX?

Global. asax is an optional file which is used to handling higher level application events such as Application_Start, Application_End, Session_Start, Session_End etc. It is also popularly known as ASP.NET Application File. This file resides in the root directory of an ASP.

What is difference between web config and global ASAX?

asax contains code which is executed. Web. config contains configuration settings of web application, for example connection string, included libraries, namespaces, users and groups access permissions to virtual directories, etc.


1 Answers

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?

like image 199
Igor Brejc Avatar answered Oct 01 '22 03:10

Igor Brejc