What is the difference between HttpApplication class and IHttpModule?

What is the difference between HttpApplication class and IHttpModule?

HttpApplication is the web application instance that has multiple IHttpModule instances registered in it. That's why every IHttpModule instance handles a certain part of application execution thus can usually be reused on many applications (think of a Session handling module or authentication module).

In terms of application/request handling there are many similarities. HttpApplication has access to application-level events like OnStart, OnEnd etc as well as request-level events like OnBeginRequest, OnEndRequest etc. IHttpModule on the other hand only has access to request-level events.

Additional note: It's possible to handle application start and end events even using an IHttpModule, but this is a non-documented feature and you have to take some special precautions. Check these two blog posts that explain it all into great depth:
Writing a custom IHttpModule that handles Application_OnStart event
How to correctly use IHttpModule to handle Application_OnStart event

I suggest you read a bit about application life cycle execution pipeline:

 
 

The HttpApplication Class

The HttpApplication class is used to access application wide information within an ASP.NET web application or site. Table B.3 shows the HttpApplication class properties.

Table B.3. Application Class Properties
PropertyDescription
Application Returns a reference to an HttpApplicationState bag instance. This is the object that is used in the global.asax and any ASP.NET Web Form; it is this collection that holds the Application scoped variables/objects/components.
Context Provides access to an HttpContext object for the current instance of HttpApplication, which provides access to HTTP pipeline-module exposed objects (Request/Response, for example).
Modules Provides access to a collection of all HttpModules configured ...

 

 

 

 

 

posted @ 2021-09-18 14:17  ChuckLu  阅读(37)  评论(0编辑  收藏  举报