首页 > 学院 > 开发设计 > 正文

Asp.Net原理Version3.0_页面声明周期

2019-11-14 15:57:23
字体:
来源:转载
供稿:网友

asp.net原理Version1.0

Asp.Net原理Version2.0

 
Asp.Net原理第三版.JPG
 
 
 
 
 
 
 
 
19个事件23个步骤.png



相关源码

页面的PRocess方法

 1 // System.Web.UI.Page 2 private void ProcessRequest(bool includeStagesBeforeAsyncPoint, bool includeStagesAfterAsyncPoint) 3 { 4     if (includeStagesBeforeAsyncPoint) 5     { 6         //调用子类的方法(这是个虚方法),1,创建页面控件树 7         this.FrameworkInitialize(); 8         base.ControlState = ControlState.FrameworkInitialized; 9     }10     bool flag = this.Context.WorkerRequest is IIS7WorkerRequest;11     try12     {13         try14         {15             if (this.IsTransacted)16             {17                 this.ProcessRequestTransacted();18             }19             else20             {21                 //页面声明周期的主要部分22                 this.ProcessRequestMain(includeStagesBeforeAsyncPoint, includeStagesAfterAsyncPoint);23             }24             if (includeStagesAfterAsyncPoint)25             {26                 flag = false;27                 this.ProcessRequestEndTrace();28             }29         }30         catch (ThreadAbortException)31         {32             try33             {34                 if (flag)35                 {36                     this.ProcessRequestEndTrace();37                 }38             }39             catch40             {41             }42         }43         finally44         {45             if (includeStagesAfterAsyncPoint)46             {47                 this.ProcessRequestCleanup();48             }49         }50     }51     catch52     {53         throw;54     }55 }
View Code

 

ProcessRequestMain方法

  1 // System.Web.UI.Page  2 private void ProcessRequestMain(bool includeStagesBeforeAsyncPoint, bool includeStagesAfterAsyncPoint)  3 {  4     try  5     {  6         HttpContext context = this.Context;  7         string text = null;  8         if (includeStagesBeforeAsyncPoint)  9         { 10             if (this.IsInAspCompatMode) 11             { 12                 AspCompatapplicationStep.OnPageStartsessionObjects(); 13             } 14             if (this.PageAdapter != null) 15             { 16                 this._requestValueCollection = this.PageAdapter.DeterminePostBackMode(); 17             } 18             else 19             { 20                 this._requestValueCollection = this.DeterminePostBackMode(); 21             } 22             string text2 = string.Empty; 23             if (this.DetermineIsExportingWebPart()) 24             { 25                 if (!RuntimeConfig.GetAppConfig().WebParts.EnableExport) 26                 { 27                     throw new InvalidOperationException(SR.GetString("WebPartExportHandler_DisabledExportHandler")); 28                 } 29                 text = this.Request.QueryString["webPart"]; 30                 if (string.IsNullOrEmpty(text)) 31                 { 32                     throw new InvalidOperationException(SR.GetString("WebPartExportHandler_InvalidArgument")); 33                 } 34                 if (string.Equals(this.Request.QueryString["scope"], "shared", StringComparison.OrdinalIgnoreCase)) 35                 { 36                     this._pageFlags.Set(4); 37                 } 38                 string text3 = this.Request.QueryString["query"]; 39                 if (text3 == null) 40                 { 41                     text3 = string.Empty; 42                 } 43                 this.Request.QueryStringText = text3; 44                 context.Trace.IsEnabled = false; 45             } 46              47             //2,确定IsCallback值 48             if (this._requestValueCollection != null) 49             { 50                 if (this._requestValueCollection["__VIEWSTATEENCRYPTED"] != null) 51                 { 52                     this.ContainsEncryptedViewState = true; 53                 } 54                 text2 = this._requestValueCollection["__CALLBACKID"]; 55                 if (text2 != null && this._request.HttpVerb == HttpVerb.POST) 56                 { 57                     this._isCallback = true; 58                 } 59                 else 60                 { 61                     if (!this.IsCrossPagePostBack) 62                     { 63                         VirtualPath virtualPath = null; 64                         if (this._requestValueCollection["__PREVIOUSPAGE"] != null) 65                         { 66                             try 67                             { 68                                 virtualPath = VirtualPath.CreateNonRelativeAllowNull(Page.DecryptString(this._requestValueCollection["__PREVIOUSPAGE"])); 69                             } 70                             catch 71                             { 72                                 this._pageFlags[8] = true; 73                             } 74                             if (virtualPath != null && virtualPath != this.Request.CurrentExecutionFilePathObject) 75                             { 76                                 this._pageFlags[8] = true; 77                                 this._previousPagePath = virtualPath; 78                             } 79                         } 80                     } 81                 } 82             } 83             if (this.MaintainScrollPositionOnPostBack) 84             { 85                 this.LoadScrollPosition(); 86             } 87             if (context.TraceIsEnabled) 88             { 89                 this.Trace.Write("aspx.page", "Begin PreInit"); 90             } 91             if (EtwTrace.IsTraceEnabled(5, 4)) 92             { 93                 EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_PRE_INIT_ENTER, this._context.WorkerRequest); 94             } 95              96             //3.1初始化PreInit 97             this.PerformPreInit(); 98             if (EtwTrace.IsTraceEnabled(5, 4)) 99             {100                 EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_PRE_INIT_LEAVE, this._context.WorkerRequest);101             }102             if (context.TraceIsEnabled)103             {104                 this.Trace.Write("aspx.page", "End PreInit");105             }106             if (context.TraceIsEnabled)107             {108                 this.Trace.Write("aspx.page", "Begin Init");109             }110             if (EtwTrace.IsTraceEnabled(5, 4))111             {112                 EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_INIT_ENTER, this._context.WorkerRequest);113             }114             //3.2递归初始化,因为要初始化树,所以用递归115             this.InitRecursive(null);116             if (EtwTrace.IsTraceEnabled(5, 4))117             {118                 EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_INIT_LEAVE, this._context.WorkerRequest);119             }120             if (context.TraceIsEnabled)121             {122                 this.Trace.Write("aspx.page", "End Init");123             }124             if (context.TraceIsEnabled)125             {126                 this.Trace.Write("aspx.page", "Begin InitComplete");127             }128             //3.3,初始化完成129             this.OnInitComplete(EventArgs.Empty);130             if (context.TraceIsEnabled)131             {132                 this.Trace.Write("aspx.page", "End InitComplete");133             }134             if (this.IsPostBack)135             {136                 if (context.TraceIsEnabled)137                 {138                     this.Trace.Write("aspx.page", "Begin LoadState");139                 }140                 if (EtwTrace.IsTraceEnabled(5, 4))141                 {142                     EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_LOAD_VIEWSTATE_ENTER, this._context.WorkerRequest);143                 }144                 //4.1,加载ViewState145                 this.LoadAllState();146                 if (EtwTrace.IsTraceEnabled(5, 4))147                 {148                     EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_LOAD_VIEWSTATE_LEAVE, this._context.WorkerRequest);149                 }150                 if (context.TraceIsEnabled)151                 {152                     this.Trace.Write("aspx.page", "End LoadState");153                     this.Trace.Write("aspx.page", "Begin ProcessPostData");154                 }155                 if (EtwTrace.IsTraceEnabled(5, 4))156                 {157                     EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_LOAD_POSTDATA_ENTER, this._context.WorkerRequest);158                 }159                 //4.2,处理回发数据160                 this.ProcessPostData(this._requestValueCollection, true);161                 if (EtwTrace.IsTraceEnabled(5, 4))162                 {163                     EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_LOAD_POSTDATA_LEAVE, this._context.WorkerRequest);164                 }165                 if (context.TraceIsEnabled)166                 {167                     this.Trace.Write("aspx.page", "End ProcessPostData");168                 }169             }170             if (context.TraceIsEnabled)171             {172                 this.Trace.Write("aspx.page", "Begin PreLoad");173             }174             //5.1页面预加载175             this.OnPreLoad(EventArgs.Empty);176             if (context.TraceIsEnabled)177             {178                 this.Trace.Write("aspx.page", "End PreLoad");179             }180             if (context.TraceIsEnabled)181             {182                 this.Trace.Write("aspx.page", "Begin Load");183             }184             if (EtwTrace.IsTraceEnabled(5, 4))185             {186                 EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_LOAD_ENTER, this._context.WorkerRequest);187             }188             //5.2页面递归加载189             this.LoadRecursive();190             if (EtwTrace.IsTraceEnabled(5, 4))191             {192                 EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_LOAD_LEAVE, this._context.WorkerRequest);193             }194             if (context.TraceIsEnabled)195             {196                 this.Trace.Write("aspx.page", "End Load");197             }198             if (this.IsPostBack)199             {200                 if (context.TraceIsEnabled)201                 {202                     this.Trace.Write("aspx.page", "Begin ProcessPostData Second Try");203                 }204                 //5.3第二次尝试加载回发数据205                 this.ProcessPostData(this._leftoverPostData, false);206                 if (context.TraceIsEnabled)207                 {208                     this.Trace.Write("aspx.page", "End ProcessPostData Second Try");209                     this.Trace.Write("aspx.page", "Begin Raise ChangedEvents");210                 }211                 if (EtwTrace.IsTraceEnabled(5, 4))212                 {213                     EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_POST_DATA_CHANGED_ENTER, this._context.WorkerRequest);214                 }215                 //6.1,触发Change事件216                 this.RaiseChangedEvents();217                 if (EtwTrace.IsTraceEnabled(5, 4))218                 {219                     EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_POST_DATA_CHANGED_LEAVE, this._context.WorkerRequest);220                 }221                 if (context.TraceIsEnabled)222                 {223                     this.Trace.Write("aspx.page", "End Raise ChangedEvents");224                     this.Trace.Write("aspx.page", "Begin Raise PostBackEvent");225                 }226                 if (EtwTrace.IsTraceEnabled(5, 4))227                 {228                     EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_RAISE_POSTBACK_ENTER, this._context.WorkerRequest);229                 }230                 //6.2,触发点击事件231                 this.RaisePostBackEvent(this._requestValueCollection);232                 if (EtwTrace.IsTraceEnabled(5, 4))233                 {234                     EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_RAISE_POSTBACK_LEAVE, this._context.WorkerRequest);235                 }236                 if (context.TraceIsEnabled)237                 {238                     this.Trace.Write("aspx.page", "End Raise PostBackEvent");239                 }240             }241             if (context.TraceIsEnabled)242             {243                 this.Trace.Write("aspx.page", "Begin LoadComplete");244             }245             //5.3,页面加载完成246             this.OnLoadComplete(EventArgs.Empty);247             if (context.TraceIsEnabled)248             {249                 this.Trace.Write("aspx.page", "End LoadComplete");250             }251             if (this.IsPostBack && this.IsCallback)252             {253                 this.PrepareCallback(text2);254             }255             else256             {257                 if (!this.IsCrossPagePostBack)258                 {259                     if (context.TraceIsEnabled)260                     {261                         this.Trace.Write("aspx.page", "Begin PreRender");262                     }263                     if (EtwTrace.IsTraceEnabled(5, 4))264                     {265                         EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_PRE_RENDER_ENTER, this._context.WorkerRequest);266                     }267                     268                     //7,递归预渲染269                     this.PreRenderRecursiveInternal();270                     if (EtwTrace.IsTraceEnabled(5, 4))271                     {272                         EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_PRE_RENDER_LEAVE, this._context.WorkerRequest);273                     }274                     if (context.TraceIsEnabled)275                     {276                         this.Trace.Write("aspx.page", "End PreRender");277                     }278                 }279             }280         }281         if (this._asyncInfo == null || this._asyncInfo.CallerIsBlocking)282         {283             this.ExecuteRegisteredAsyncTasks();284         }285         this._request.ValidateRawUrl();286         if (includeStagesAfterAsyncPoint)287         {288             if (this.IsCallback)289             {290                 this.RenderCallback();291             }292             else293             {294                 if (!this.IsCrossPagePostBack)295                 {296                     if (context.TraceIsEnabled)297                     {298                         this.Trace.Write("aspx.page", "Begin PreRenderComplete");299                     }300                     this.PerformPreRenderComplete();301                     if (context.TraceIsEnabled)302                     {303                         this.Trace.Write("aspx.page", "End PreRenderComplete");304                     }305                     if (context.TraceIsEnabled)306                     {307                         this.BuildPageProfileTree(this.EnableViewState);308                         this.Trace.Write("aspx.page", "Begin SaveState");309                     }310                     if (EtwTrace.IsTraceEnabled(5, 4))311                     {312                         EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_SAVE_VIEWSTATE_ENTER, this._context.WorkerRequest);313                     }314                     //8,保存页面状态到ViewState315                     this.SaveAllState();316                     if (EtwTrace.IsTraceEnabled(5, 4))317                     {318                         EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_SAVE_VIEWSTATE_LEAVE, this._context.WorkerRequest);319                     }320                     if (context.TraceIsEnabled)321                     {322                         this.Trace.Write("aspx.page", "End SaveState");323                         this.Trace.Write("aspx.page", "Begin SaveStateComplete");324                     }325                     this.OnSaveStateComplete(EventArgs.Empty);326                     if (context.TraceIsEnabled)327                     {328                         this.Trace.Write("aspx.page", "End SaveStateComplete");329                         this.Trace.Write("aspx.page", "Begin Render");330                     }331                     if (EtwTrace.IsTraceEnabled(5, 4))332                     {333                         EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_RENDER_ENTER, this._context.WorkerRequest);334                     }335                     if (text != null)336                     {337                         this.ExportWebPart(text);338                     }339                     else340                     {341                         //9,渲染出HTML342                         this.RenderControl(this.CreateHtmlTextWriter(this.Response.Output));343                     }344                     if (EtwTrace.IsTraceEnabled(5, 4))345                     {346                         EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_RENDER_LEAVE, this._context.WorkerRequest);347                     }348                     if (context.TraceIsEnabled)349                     {350                         this.Trace.Write("aspx.page", "End Render");351                     }352                     this.CheckRemainingAsyncTasks(false);353                 }354             }355         }356     }357     catch (ThreadAbortException ex2)358     {359         HttpApplication.CancelModuleException ex = ex2.ExceptionState as HttpApplication.CancelModuleException;360         if (!includeStagesBeforeAsyncPoint || !includeStagesAfterAsyncPoint || this._context.Handler != this || this._context.ApplicationInstance == null || ex == null || ex.Timeout)361         {362             this.CheckRemainingAsyncTasks(true);363             throw;364         }365         this._context.ApplicationInstance.CompleteRequest();366         Page.ThreadResetAbortWithAssert();367     }368     catch (ConfigurationException)369     {370         throw;371     }372     catch (Exception e)373     {374         PerfCounters.IncrementCounter(AppPerfCounter.ERRORS_DURING_REQUEST);375         PerfCounters.IncrementCounter(AppPerfCounter.ERRORS_TOTAL);376         if (!this.HandleError(e))377         {378             throw;379         }380     }381 }
View Code

 

 

 

 


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表