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>