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

 

 

 

 

 

作者:Chuck Lu    GitHub    
posted @   ChuckLu  阅读(39)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2019-09-18 The implementation of iterators in C# and its consequences (part 1) Raymond Chen
2019-09-18 What is the use of c# “Yield” keyword ?
2019-09-18 What is the yield keyword used for in C#?
2019-09-18 Coroutine 协程
2018-09-18 beyond compare 比较文本 standard alignment VS unaligned
2015-09-18 左移运算符
2015-09-18 大小端以及字节序的问题 Endianness
点击右上角即可分享
微信分享提示