ASP.NET 生命周期及管道事件

Client(发送报文:请求行+请求头+空行+请求体) <------ Http 协议 ------> Server,由

Http.sys 监听 Http 请求 -> WAS+Metabase(通过URL确定WebApp工作进程) ->

W3WP.exe(一个应用程序池,加载Aspnet_IsAPI.dll) ->AppDomainFactory(构造 ApplicationManager)->ISAPIApplicationHost+ISAPIRuntime(由ApplicationManager创建)->

ISAPIWorkerRequest(根据句柄内存块封装Http请求信息,IIS版本等等)+ HttpRuntime,然后

HttpRuntime 开始接收ISAPIWorkerRequest,并如下进行处理:

创建 HttpContext(包含HttpRequest/HttpResponse等等), 和通过HttpApplicationFactory 获取或创建HttpApplication(包含HttpContext),

最后执行 HttpApplication 的 ProcessReuqest(...)。在执行过程中,所包含的管道事件,将按顺序触发。

如果某些管道事件在 HttpModule 中有被重新注册,则执行相应事件处理程序。

//context_xxxxxx 为 asp.net 管道事件,目的是逐步完善HttpContext内容

Application_Start

context_BeginRequest ////1.开始处理请求,httpModule 开始,在这之前所有实现IHttpModule的*.cs,将通过反射加载进来,并对module对象集合进行迭代,执行接口方法 Init(HttpApplication对象)
context_AuthenticateRequest////2.授权验证请求,获取用户授权信息
context_PostAuthenticateRequest////3.获取成功
context_AuthorizeRequest////4.授权,一般来检查用户是否获取权限
context_PostAuthorizeRequest////5.获得请求
context_ResolveRequestCache////6.获取页面缓存结果
context_PostResolveRequestCache////7.已获取缓存    当前请求映射到MvcHandler
context_PostMapRequestHandler////8.创建页面对象:创建最终处理当前http请求的handler实例
Session_Start//执行Session
context_AcquireRequestState////9.获取Session
context_PostAcquireRequestState////10.获得Session
context_PreRequestHandlerExecute////11.准备执行处理程序,在这之前所有实现IHttpHandler的*.cs,将通过反射加载进来
MyHandler//执行处理程序, 并且开始进入页面生命周期,对handler对象集合进行迭代,执行接口方法 ProcessRequest(HttpContext对象)
context_PostRequestHandlerExecute ////12.已经执行了处理程序
context_ReleaseRequestState////13.释放请求的状态
context_PostReleaseRequestState////14.已经释放了请求状态
context_UpdateRequestCache////15.更新缓存
context_PostUpdateRequestCache////16.已经更新了缓存

context_LogRequest////17.请求的日志操作
context_PostLogRequest;////18.已经完成了请求的日志操作

context_EndRequest////19.本次请求处理完成,httpModule 结束

context_PreSendRequestHeaders////20.准备向客户端发送请求头数据
context_PreSendRequestContent////21.准备向客户端发送请求体数据
时间: 2024-08-05 14:34:05

ASP.NET 生命周期及管道事件的相关文章

Asp.Net生命周期和Http管道技术

本篇主要介绍一下内容: 1.ASP.NET生命周期 2.Http运行时 3.Http管道技术 a)inetinfo.exe b)asp.net_isapi.dll c)aspnet_wp.exe d)HttpHandler e)HttpModule 4.实现Httphandler的使用 5.ASP.NET生命周期 6.(IIS)Web服务器(inetinfo.exe): 1.只有少数几种被客户端请求的资源类型由iis直接处理,如对Html页面,文本文件,jpeg和gif图像的传入请求 2.对AS

Asp.net生命周期

asp.net生命周期一直就想对他彻底的动手搞清楚了.以前一直处于朦朦胧胧的认识状态,今天终于下狠心动手做了个例子来了解生命周期过程.之所以打算自己动手做是因为我一直觉得虽然网上有了类似的例子,不过只有自己亲手做一遍然后通过博客写出来才能使自己更深刻的理解这些内容.好了,不废话了,开始做. 编写代码 先来看一下整个项目的结构以便对我们做的例子有一个大体的了解.项目中我定义了一个module,handler,global和一个页面以及自定义的一个控件.因为有的过程中没法直接使用Response方法

ASP.NET生命周期详解 [转]

最近一直在学习ASP.NET MVC的生命周期,发现ASP.NET MVC是建立在ASP.NET Framework基础之上的,所以原来对于ASP.NET WebForm中的很多处理流程,如管道事件等,对于ASP.NET MVC同样适用.只是MVC URLRouting Module对进入到server的request进行了拦截,然后对此次request的handler进行了特殊的处理.总结来说,就是 ASP.NET管道是所有ASP.NET Web Applicaiton,包括WebForm,

Asp.Net生命周期系列一

Asp.Net生命周期对于初级甚至中级程序员来说,一直都是一个难题,很多程序员不了解生命周期,导致使用Asp.Net做开发感觉很不灵活,感觉太多东西被微软封装好了,我们不能改变,其实只要你稍微了解一下就知道,原来不是这样的! 我写这一系列文章是采用总分的方式,先让大家整体了解,然后再逐一突破.先将一个故事,也是园子里看到的(http://www.cnblogs.com/GodSpeed/archive/2010/06/19/1761095.html),我认为这个写的有些细节上的错误,稍稍添加些自

【IHttpHandler】ASP.NET 生命周期

对由 Microsoft? Internet 信息服务 (IIS) 处理的 Microsoft? ASP.NET 页面的每个请求都会被移交到 ASP.NET HTTP 管道.HTTP 管道由一系列托管对象组成,这些托管对象按顺序处理请求,并将 URL 转换为纯 HTML 文本.HTTP 管道的入口是 HttpRuntime 类.ASP.NET 结构为辅助进程中的每个 AppDomain 创建一个此类的实例.(请注意,辅助进程为每个当前正在运行的 ASP.NET 应用程序维护一个特定的 AppDo

MVC学习笔记---MVC生命周期及管道

ASP.NET和ASP.NET MVC的HttpApplication请求处理管道有共同的部分和不同之处,本系列将体验ASP.NET MVC请求处理管道生命周期的19个关键环节. ①以IIS6.0为例,首先由w3wp.exe维护着一个工作进程 ②如果是第一次加载,由Aspnet_isapi.dll加载.NET运行时 ③一个工作进程里有一个应用程序池,其中可以承载多个应用程序域AppDomain ④HTTP.SYS接收请求,通过应用程序域工厂AppDomainFactory创建应用程序域AppDo

ASP.NET机制详细的管道事件流程

最近回顾了一些新知识, 本人简单介绍下ASP .NET机制,:在这里与大家一起分享一下: 第一.浏览器向服务器发送请求. 1)浏览器向IIS服务器发送请求网址的域名,根据HTTP协议封装成请求报文,通过DNS解析请求的IP地址,接着通过socket与IIS通讯. 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Net; 5 using System.Net.Socket

ASP.NET Page执行顺序(ASP.NET生命周期)

此部分说明的生命周期只有部分: ---引用MSDN 阶段 说明 页请求 页请求发生在页生命周期开始之前.用户请求页时,ASP.NET 将确定是否需要分析和编译页(从而开始页的生命周期),或者是否可以在不运行页的情况下发送页的缓存版本以进行响应. 开始 在开始阶段,将设置页属性,如 Request和 Response在此阶段,页还将确定请求是回发请求还是新请求,并设置 IsPostBack 属性.此外,在开始阶段期间,还将设置页的 UICulture 属性. 页初始化 页初始化期间,可以使用页中的

[译] ASP.NET 生命周期 – ASP.NET 上下文对象(五)

ASP.NET 上下文对象 ASP.NET 提供了一系列对象用来给当前请求,将要返回到客户端的响应,以及 Web 应用本身提供上下文信息.间接的,这些上下文对象也可以用来回去核心 ASP.NET 框架特性. 上下文对象提供了应用,当前请求,与当前请求相关联的响应的信息.也提供了对多数重要的 ASP.NET 平台服务的访问,比如安全与状态数据.我们可以在 MVC 框架的 controllers 和 views 中使用上下文对象来根据当前的请求或者应用状态数据来调整我们应用的响应.在创建模块或者处理