Asp.net 底层探秘
从客户端向IIS发出请求到何苦段得到请求的结果,Asp.net页面处理过程:
合法性检查=》aspnet_filter.dll=>aspnet_isapi.dll=>ApplicationManager=>HostingEnvironment
=>初始化所有核心应用程序对象,创建HttpApplication类的实例=》HttpApplication管线处理请求=》
实例化实现IHttpHandler或者IHttpAsncHandler接口的类=》ProcessRequest方法。
1,IHttpModule接口
IHttpModule接口用于提供模块初始化和处置事件,在IHttpModule接口定影了两个方法:
Dispose()和Init(HttpApplication context).在Init方法中是以HttpApplication作为参数的,HttpApplication中
的事件。
在项目中新建一个实现IHttpModule接口的类。在其中实现IHttpHandler接口
在接口中Init方法中,给Application.BeginRequst和Application.EndRequest分别添加
EventHandler类型事件。
分别实现:
Application_BeginRequest方法和Application_EndRequest方法。
然后在Web.config中添加
<System.web>
<HttpModule></HttpModule>
</System.web>
2,IHttpHandler接口 可以实现
在项目中实现IHttpHandler接口的类。同时还要实现System.Web.SessionState.
IRequiresSessionState接口,才能访问Session。
ProcessRequest(Httpcontext context) 方法
在web.config方式中添加
<System.web>
<httpHandler>
<add verb="*" path="*.*" type="DownloadHandlerReferrer" />
<add verb="*" path="*.*" type="ForbiddenThief" />
</httpHandler>
</System.web>