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个管道处理事件