asp.net底层http管道
IIS本事是不支持动态页面的,也就是说它仅仅支持静态html页面的内容,对于如.aspx,.php,.cs等,IIS并不会处理这些标记,它就会把它当作文本,丝毫不做处理发送到客户端。为了解决这个问题。IIS有一种机制,叫做ISAPI的筛选器,它是一个标准组件(COM组件。) ASP.NET服务在注册到IIS的时候,会把每个扩展可以处理的文件扩展名注册到IIS里面(如:*.aspx,*.php等),扩展启动后,就根据定义好的方式来处理IIS所不能处理的文件,然后把控制权跳转到专门处理代码的进程中(如*.aspx由aspnet_isapi.dll来处理)。让这个进程开始处理代码,生成标准的HTML代码,生成后把这些代码加入到原有的HTML代码中,最后把完整的HTML返回到IIS,IIS再把内容发送给客户端。
总结:客户端——>服务器windows内核中的HTTP.SYS组件——>IIS——>客户端浏览器(没有相对应的程序处理html.css.js.jpg....)
——>IIS——>aspnet_isapi.dll(相对应的程序处理,通过文件的后缀名判断)——>...
在PostMapRequestHandler事件中会创建请求的页面对象,并转换为IHttpHandler接口。我们用的页面Page:TemplateControl,IHttpHandler,在这个事件是只创建没有调用。
在AcquireRequestState事件和PostAcquireRequestState事件中,会接收到浏览器发过来的SessionId。并先会将IHttpHandler接口尝试转换为IRequiresSessionState接口,如果转换成功,Asp.Net会根据这个SessionId到服务器的Session池中去查找所对应的Session对象,并将这个Session对象赋值到HttpContext对象的Session属性。如果尝试转换为IRequiresSessionState接口不成功,则不加载Session。
在PreRequestHandlerExecute和PostRequestHandlerExecute事件中会调用PostMapRequestHandler事件中创建的页面对象的ProcessRequest方法。
http://www.cnblogs.com/cilence/archive/2012/05/28/2520712.html
1 Application_Start 2 Init 3 Application_BeginRequest 4 Application_AuthenticateRequest 5 Application_PostAuthenticateRequest 6 Application_AuthorizeRequest 7 Application_PostAuthorizeRequest 8 Application_ResolveRequestCache 9 Application_PostResolveRequestCache 10 Application_PostMapRequestHandler 11 Application_AcquireRequestState 12 Application_PostAcquireRequestState 13 Application_PreRequestHandlerExecute 调用页面生命周期事件 14 Application_PostRequestHandlerExecute 15 Application_ReleaseRequestState 16 Application_PostReleaseRequestState 17 Application_UpdateRequestCache 18 Application_PostUpdateRequestCache 19 Application_EndRequest 20 Application_Disposed 21 Application_End
http://www.cnblogs.com/stwyhm/archive/2006/08/08/470972.html
http://www.cnblogs.com/cilence/archive/2012/05/28/2520712.html
http://www.cnblogs.com/JimmyZhang/archive/2007/09/04/880967.html
http://www.cnblogs.com/xieex/archive/2007/10/29/941300.html
http://blog.csdn.net/sundacheng1989/article/details/10468393