请求管道模型
如果是请求的是一个aspx请求 iis 就把请求交给aspnet_isapi.dll(非托管的程序)的 扩展程序进行处理 扩展处理再把请求 通过ecb(这是一个windows操作系统的句柄,拿到这个句柄之后就可以访问到这个句柄所代表的某些资源 托管环境通过句柄就可以访问到这个请求的原始的报文信息了)的句柄交给 托管的 ISApiRuntime 句柄ecb通过ISPAiRuntime创建了httpWorkRequest对象(httpWorkRequest 对象就是一个简单的 报文的封装)然后再把
httpWorkRequest对象交给HttpRuntime的ProcessRequest方法
通过ProcessRequest方法把httpWorkRequest对象封装成一个HttpContext 上下文 也就是把请求报文封装成了一个HttpRequest对象和httpResponse对象 在通过HttpApplicationFactory 创建一个HttpApplication的具体的实例 请求就随着 HttpApplication的管道一次一次的流 在这个管道中有19个公开的事件 一共有23个事件 请求流到HttpAppLication的ProcessRequest方法的时候 它内部帮我们一次性的把这19个事件都调用了
而这19个事件允许我们开发人员注册。在Asp.net HttpApplication管道里面通过事件的方式实现了这种过滤的管道 (在第八个事件里面创建最终处理当前请求的handler实例 在第11 12事件的 区间执行调用第八个事件创建出来的handler的processRequest的方法)(在第八个事件只是根据地址请求的文件 创建出来的实例)
要学习页面的生命周期就要知道请求管道中程序员可以调用的那19个事件
下面是请求管道中的19个事件
1.BeginRequest:开始处理请求
2.AuthenticateRequest 授权验证请求,获取用户授权信息
3.:PostAuthenticateRequest 获取成功
4.:AunthorizeRequest 授权 一般检查用户名是否获得了权限
5.:PostAuthorizeRequest 获得授权
6.:ResolveRequestcache:获取页面缓存结果
7.:PostResolveRequestHandler 以获取缓存 当前请求映射到mvchandler(pr) 创建控制器工厂 ,创建控制器,调用action执行,view→response
//action Handler : PR()
8.:PostMapRequestHandler 创建页面对象:创建 最终处理当前http请求的 Handler 实例: 第一从HttpContext中获取当前的PR Handler ,Create
9.:PostAcquireRequestState 获取Session
10.PostAcquireRequestState 获得Session
11.PreRequestHandlerExecute:准备执行页面对象 执行页面对象的ProcessRequest方法
12.PostRequestHandlerExecute 执行完页面对象了
13.ReleaseRequestState 释放请求状态
14.PostReleaseRequestState 已释放请求状态
15.UpdateRequestCache 更新缓存
16.PostUpdateRequestCache 已更新缓存
17.LogRequest 日志记录
18.PostLogRequest 已完成日志
19.EndRequest 完成、
深入探讨ASP.NET请求管道的运作机制,包括关键事件、生命周期管理与具体实现过程,帮助开发者理解请求处理流程。
914

被折叠的 条评论
为什么被折叠?



