这是19个管道处理事件

ProcessRequestMain->
if (this.IsInAspCompatMode){AspCompatApplicationStep.OnPageStartSessionObjects();}
PreInit-PerformPreInit()-> //预初始化:准备初始化页面控件,设置皮肤。
Init-InitRecursive(null)->//页面对象初始化
InitComplete(OnInitComplete-EventArgs.Empty)->//页面初始化完成:登记用户触发的事件。
if (this.IsPostBack){ -> LoadState-LoadAllState()加载ViewState,-> ProcessPostData-ProcessPostData(this._requestValueCollection, true)还原控件状态 }->
PreLoad-OnPreLoad(EventArgs.Empty) ->
Load-LoadRecursive() ->
if (this.IsPostBack){ ProcessPostData Second Try-ProcessPostData(this._leftoverPostData, false) -> Raise ChangedEvents-RaiseChangedEvents() -> Raise PostBackEvent-RaisePostBackEvent(this._requestValueCollection);}//触发控件事件
LoadComplete-OnLoadComplete(EventArgs.Empty) ->
if (!this.IsCrossPagePostBack){->PreRenderComplete-PerformPreRenderComplete()//页面生成前准备} -> SaveState-SaveAllState()
->SaveStateComplete-OnSaveStateComplete(EventArgs.Empty) ->//保存页面和控件数据到ViewState
Render-RenderControl(this.CreateHtmlTextWriter(this.Response.Output))

这是19个管道处理(也就是19个委托事件的执行。)
1.BeginRequest 开始处理请求
2.AuthenticateRequest 授权验证请求,获取用户授权信息
3.PostAuthenticateRequest 获取成功
4.AunthorizeRequest 授权,一般来检查用户是否获得权限
5.PostAuthorizeRequest 获得授权
6.ResolveRequestCache 获取页面缓存结果(如果没有则执行)
7.PostResolveRequestCache 已获取缓存
8.PostMapRequestHandler 创建页面对象
9.AcquireRequestState 获取Session -- 先判断当前页面对象是否实现了IRequiresSessionState接口,如果实现了,则从浏览器发来的请求报文头中获得SessionId,并到服务器的 Session池中获得对应的Session对象,最后赋值给 HttpContext的Session属性。
10.PostAcquireRequestState 获得Session
11.PreRequestHandlerExecute 准备执行页面对象
×执行页面对象的ProcessRequest方法(1.ashx,1.aspx)_Render
12.PostRequestHandlerExecute 执行完页面对象了
13.ReleaseRequestState 释放请求状态
14.PostReleaseRequestState 已释放请求状态
15.UpdateReuqestCache 更新缓存
16.PostUpdateRequestCache 已更新缓存
17.LogRequest 日志记录
18.PostLogRequest 已完成日志
19.EndRequest 完成

这是19个管道处理事件

时间: 2024-10-24 10:28:24

这是19个管道处理事件的相关文章

Asp.Net MVC 的19个管道事件

httpApplication调用ProcessRequest方法,内部执行19个管道事件,如下 BeginRequest  开始处理请求 AuthenticateRequest 授权验证请求开始,获取用户授权信息 PostAuthenticateRequest 获取成功 AunthorizeRequest 授权,一般用来检查用户是否获得权限 PostAuthorizeRequest  获得授权 ResolveRequestCache 获取页面缓存结果(如果没有则执行) PostResolveR

ASP.NET MVC请求处理管道生命周期的19个关键环节(1-6)

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工作者进程,直至它到达最终的处理程序之前要经过一系列的步骤和过程,这个步骤和过程称为ASP.NET处理管道. Asp.net的处理管道流程如下: 语言描述如下: Asp.net处理管道的第一步是创建HttpWorkerRequest对象,它包含于当前请求有关的所有信息. HttpWorkerRequest把请求传递给HttpRuntime类的静态ProcessRequest方法.HttpRuntime首先要做的事是创建HttpContext对象,并用HttpWorkerR

asp.net处理事件

从来不用也从来不研究这事件.但为了写那种CGI式的接口不得已研究一下. 环境  W10 VS2017 测试方法:写一个实现IHttpModule接口的类,在Init方法中加载所有事件然后打出日志,看看事件执行顺序. 模块接口类需要在IIS中打开"模块"->添加"模块"后使用.或者在webconfig里添加模块节点也行. 事件执行结果如下: 0在 ASP.NET 响应请求时作为 HTTP 执行管线链中的第一个事件发生.BeginRequest 1 当安全模块建立

Web Host消息处理管道

Web Host消息处理管道 前言 我们知道Web API本身是无法提供请求-响应的机制,它是通过Web Host以及Self Host的寄宿的宿主方式来提供一个请求-响应的运行环境.二者都是将请求和响应抽象成HttpResponseMessage和HttpRequesMessage对象,并将请求HttpRequestMessage传入到HttpMessageHandler进行处理最终将响应通过HttpResponseMessage逆向通过HttpMessageHandler返回到客户端,但是在

MongoDB聚合管道

通过上一篇文章中,认识了MongoDB中四个聚合操作,提供基本功能的count.distinct和group,还有可以提供强大功能的mapReduce. 在MongoDB的2.2版本以后,聚合框架中多了一个新的成员,聚合管道,数据进入管道后就会经过一级级的处理,直到输出. 对于数据量不是特别大,逻辑也不是特别复杂的聚合操作,聚合管道还是比mapReduce有很多优势的: 相比mapReduce,聚合管道比较容易理解和使用 可以直接使用管道表达式操作符,省掉了很多自定义js function,一定

java io系列04之 管道(PipedOutputStream和PipedInputStream)的简介,源码分析和示例

本章,我们对java 管道进行学习. 转载请注明出处:http://www.cnblogs.com/skywang12345/p/io_04.html java 管道介绍 在java中,PipedOutputStream和PipedInputStream分别是管道输出流和管道输入流.它们的作用是让多线程可以通过管道进行线程间的通讯.在使用管道通信时,必须将PipedOutputStream和PipedInputStream配套使用.使 用管道通信时,大致的流程是:我们在线程A中向PipedOut

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范畴)是个什么概念了,其实就是从Unix移植过来的一种概念,也可以说是一种模式吧(只允许一头读,一头写,并且读完了就会自动消失). asp.net的管道模型中包括HttpApplication的19个管道事件,其实HttpApplication并不负责这19个管道事件,只是在恰当的时机触发这19个管道事件而已. 以下图截图自:https://www.hitoy.org/pipe-aplication-in-linux.html 以下