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_AuthenticateRequest2.授权验证请求,获取用户授权信息
context_PostAuthenticateRequest3.获取成功
context_AuthorizeRequest4.授权,一般来检查用户是否获取权限
context_PostAuthorizeRequest5.获得请求
context_ResolveRequestCache6.获取页面缓存结果
context_PostResolveRequestCache7.已获取缓存    当前请求映射到MvcHandler
context_PostMapRequestHandler8.创建页面对象:创建最终处理当前http请求的handler实例
Session_Start//执行Session
context_AcquireRequestState9.获取Session
context_PostAcquireRequestState10.获得Session
context_PreRequestHandlerExecute11.准备执行处理程序,在这之前所有实现IHttpHandler的*.cs,将通过反射加载进来
MyHandler//执行处理程序, 并且开始进入页面生命周期,对handler对象集合进行迭代,执行接口方法 ProcessRequest(HttpContext对象)
context_PostRequestHandlerExecute 12.已经执行了处理程序
context_ReleaseRequestState13.释放请求的状态
context_PostReleaseRequestState14.已经释放了请求状态
context_UpdateRequestCache15.更新缓存
context_PostUpdateRequestCache16.已经更新了缓存

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

context_EndRequest19.本次请求处理完成,httpModule 结束


context_PreSendRequestHeaders20.准备向客户端发送请求头数据
context_PreSendRequestContent21.准备向客户端发送请求体数据

转载于:https://www.cnblogs.com/yipeng-yu/archive/2011/09/16/2178627.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值