详解ASP.NET页面生命周期(3)

private void ProcessRequestMain(bool includeStagesBeforeAsyncPoint, bool includeStagesAfterAsyncPoint) { try { HttpContext context = this.Context; string str = null; if (includeStagesBeforeAsyncPoint) { if (this.IsInAspCompatMode) { AspCompatApplicationStep.OnPageStartSessionObjects(); } if (this.PageAdapter != null) { this._requestValueCollection = this.PageAdapter.DeterminePostBackMode(); if (this._requestValueCollection != null) { this._unvalidatedRequestValueCollection = this.PageAdapter.DeterminePostBackModeUnvalidated(); } } else { this._requestValueCollection = this.DeterminePostBackMode(); if (this._requestValueCollection != null) { this._unvalidatedRequestValueCollection = this.DeterminePostBackModeUnvalidated(); } } string callbackControlID = string.Empty; if (this.DetermineIsExportingWebPart()) { if (!RuntimeConfig.GetAppConfig().WebParts.EnableExport) { throw new InvalidOperationException(SR.GetString("WebPartExportHandler_DisabledExportHandler")); } str = this.Request.QueryString["webPart"]; if (string.IsNullOrEmpty(str)) { throw new InvalidOperationException(SR.GetString("WebPartExportHandler_InvalidArgument")); } if (string.Equals(this.Request.QueryString["scope"], "shared", StringComparison.OrdinalIgnoreCase)) { this._pageFlags.Set(4); } string str3 = this.Request.QueryString["query"]; if (str3 == null) { str3 = string.Empty; } this.Request.QueryStringText = str3; context.Trace.IsEnabled = false; } if (this._requestValueCollection != null) { if (this._requestValueCollection["__VIEWSTATEENCRYPTED"] != null) { this.ContainsEncryptedViewState = true; } callbackControlID = this._requestValueCollection["__CALLBACKID"]; if ((callbackControlID != null) && (this._request.HttpVerb == HttpVerb.POST)) { this._isCallback = true; } else if (!this.IsCrossPagePostBack) { VirtualPath path = null; if (this._requestValueCollection["__PREVIOUSPAGE"] != null) { try { path = VirtualPath.CreateNonRelativeAllowNull(DecryptString(this._requestValueCollection["__PREVIOUSPAGE"], Purpose.WebForms_Page_PreviousPageID)); } catch { this._pageFlags[8] = true; } if ((path != null) && (path != this.Request.CurrentExecutionFilePathObject)) { this._pageFlags[8] = true; this._previousPagePath = path; } } } } if (this.MaintainScrollPositionOnPostBack) { this.LoadScrollPosition(); } if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "Begin PreInit"); } if (EtwTrace.IsTraceEnabled(5, 4)) { EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_PRE_INIT_ENTER, this._context.WorkerRequest); } this.PerformPreInit(); if (EtwTrace.IsTraceEnabled(5, 4)) { EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_PRE_INIT_LEAVE, this._context.WorkerRequest); } if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "End PreInit"); } if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "Begin Init"); } if (EtwTrace.IsTraceEnabled(5, 4)) { EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_INIT_ENTER, this._context.WorkerRequest); } this.InitRecursive(null); if (EtwTrace.IsTraceEnabled(5, 4)) { EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_INIT_LEAVE, this._context.WorkerRequest); } if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "End Init"); } if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "Begin InitComplete"); } this.OnInitComplete(EventArgs.Empty); if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "End InitComplete"); } if (this.IsPostBack) { if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "Begin LoadState"); } if (EtwTrace.IsTraceEnabled(5, 4)) { EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_LOAD_VIEWSTATE_ENTER, this._context.WorkerRequest); } this.LoadAllState(); if (EtwTrace.IsTraceEnabled(5, 4)) { EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_LOAD_VIEWSTATE_LEAVE, this._context.WorkerRequest); } if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "End LoadState"); this.Trace.Write("aspx.page", "Begin ProcessPostData"); } if (EtwTrace.IsTraceEnabled(5, 4)) { EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_LOAD_POSTDATA_ENTER, this._context.WorkerRequest); } this.ProcessPostData(this._requestValueCollection, true); if (EtwTrace.IsTraceEnabled(5, 4)) { EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_LOAD_POSTDATA_LEAVE, this._context.WorkerRequest); } if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "End ProcessPostData"); } } if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "Begin PreLoad"); } this.OnPreLoad(EventArgs.Empty); if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "End PreLoad"); } if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "Begin Load"); } if (EtwTrace.IsTraceEnabled(5, 4)) { EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_LOAD_ENTER, this._context.WorkerRequest); } this.LoadRecursive(); if (EtwTrace.IsTraceEnabled(5, 4)) { EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_LOAD_LEAVE, this._context.WorkerRequest); } if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "End Load"); } if (this.IsPostBack) { if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "Begin ProcessPostData Second Try"); } this.ProcessPostData(this._leftoverPostData, false); if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "End ProcessPostData Second Try"); this.Trace.Write("aspx.page", "Begin Raise ChangedEvents"); } if (EtwTrace.IsTraceEnabled(5, 4)) { EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_POST_DATA_CHANGED_ENTER, this._context.WorkerRequest); } this.RaiseChangedEvents(); if (EtwTrace.IsTraceEnabled(5, 4)) { EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_POST_DATA_CHANGED_LEAVE, this._context.WorkerRequest); } if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "End Raise ChangedEvents"); this.Trace.Write("aspx.page", "Begin Raise PostBackEvent"); } if (EtwTrace.IsTraceEnabled(5, 4)) { EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_RAISE_POSTBACK_ENTER, this._context.WorkerRequest); } this.RaisePostBackEvent(this._requestValueCollection); if (EtwTrace.IsTraceEnabled(5, 4)) { EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_RAISE_POSTBACK_LEAVE, this._context.WorkerRequest); } if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "End Raise PostBackEvent"); } } if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "Begin LoadComplete"); } this.OnLoadComplete(EventArgs.Empty); if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "End LoadComplete"); } if (this.IsPostBack && this.IsCallback) { this.PrepareCallback(callbackControlID); } else if (!this.IsCrossPagePostBack) { if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "Begin PreRender"); } if (EtwTrace.IsTraceEnabled(5, 4)) { EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_PRE_RENDER_ENTER, this._context.WorkerRequest); } this.PreRenderRecursiveInternal(); if (EtwTrace.IsTraceEnabled(5, 4)) { EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_PRE_RENDER_LEAVE, this._context.WorkerRequest); } if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "End PreRender"); } } } if ((this._legacyAsyncInfo == null) || this._legacyAsyncInfo.CallerIsBlocking) { this.ExecuteRegisteredAsyncTasks(); } this.ValidateRawUrlIfRequired(); if (includeStagesAfterAsyncPoint) { if (this.IsCallback) { this.RenderCallback(); } else if (!this.IsCrossPagePostBack) { if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "Begin PreRenderComplete"); } this.PerformPreRenderComplete(); if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "End PreRenderComplete"); } if (context.TraceIsEnabled) { this.BuildPageProfileTree(this.EnableViewState); this.Trace.Write("aspx.page", "Begin SaveState"); } if (EtwTrace.IsTraceEnabled(5, 4)) { EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_SAVE_VIEWSTATE_ENTER, this._context.WorkerRequest); } this.SaveAllState(); if (EtwTrace.IsTraceEnabled(5, 4)) { EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_SAVE_VIEWSTATE_LEAVE, this._context.WorkerRequest); } if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "End SaveState"); this.Trace.Write("aspx.page", "Begin SaveStateComplete"); } this.OnSaveStateComplete(EventArgs.Empty); if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "End SaveStateComplete"); this.Trace.Write("aspx.page", "Begin Render"); } if (EtwTrace.IsTraceEnabled(5, 4)) { EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_RENDER_ENTER, this._context.WorkerRequest); } if (str != null) { this.ExportWebPart(str); } else { this.RenderControl(this.CreateHtmlTextWriter(this.Response.Output)); } if (EtwTrace.IsTraceEnabled(5, 4)) { EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_RENDER_LEAVE, this._context.WorkerRequest); } if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "End Render"); } this.CheckRemainingAsyncTasks(false); } } } catch (ThreadAbortException exception1) { HttpApplication.CancelModuleException exceptionState = exception1.ExceptionState as HttpApplication.CancelModuleException; if ((((includeStagesBeforeAsyncPoint & includeStagesAfterAsyncPoint) && (this._context.Handler == this)) && ((this._context.ApplicationInstance != null) && (exceptionState != null))) && !exceptionState.Timeout) { this._context.ApplicationInstance.CompleteRequest(); ThreadResetAbortWithAssert(); } else { this.CheckRemainingAsyncTasks(true); throw; } } catch (ConfigurationException) { throw; } catch (Exception exception2) { PerfCounters.IncrementCounter(AppPerfCounter.ERRORS_DURING_REQUEST); PerfCounters.IncrementCounter(AppPerfCounter.ERRORS_TOTAL); if (!this.HandleError(exception2)) { throw; } } } private void ProcessRequestMain(bool includeStagesBeforeAsyncPoint, bool includeStagesAfterAsyncPoint) { try { HttpContext context = this.Context; string str = null; if (includeStagesBeforeAsyncPoint) { if (this.IsInAspCompatMode) { AspCompatApplicationStep.OnPageStartSessionObjects(); } if (this.PageAdapter != null) { this._requestValueCollection = this.PageAdapter.DeterminePostBackMode(); if (this._requestValueCollection != null) { this._unvalidatedRequestValueCollection = this.PageAdapter.DeterminePostBackModeUnvalidated(); } } else { this._requestValueCollection = this.DeterminePostBackMode(); if (this._requestValueCollection != null) { this._unvalidatedRequestValueCollection = this.DeterminePostBackModeUnvalidated(); } } string callbackControlID = string.Empty; if (this.DetermineIsExportingWebPart()) { if (!RuntimeConfig.GetAppConfig().WebParts.EnableExport) { throw new InvalidOperationException(SR.GetString("WebPartExportHandler_DisabledExportHandler")); } str = this.Request.QueryString["webPart"]; if (string.IsNullOrEmpty(str)) { throw new InvalidOperationException(SR.GetString("WebPartExportHandler_InvalidArgument")); } if (string.Equals(this.Request.QueryString["scope"], "shared", StringComparison.OrdinalIgnoreCase)) { this._pageFlags.Set(4); } string str3 = this.Request.QueryString["query"]; if (str3 == null) { str3 = string.Empty; } this.Request.QueryStringText = str3; context.Trace.IsEnabled = false; } if (this._requestValueCollection != null) { if (this._requestValueCollection["__VIEWSTATEENCRYPTED"] != null) { this.ContainsEncryptedViewState = true; } callbackControlID = this._requestValueCollection["__CALLBACKID"]; if ((callbackControlID != null) && (this._request.HttpVerb == HttpVerb.POST)) { this._isCallback = true; } else if (!this.IsCrossPagePostBack) { VirtualPath path = null; if (this._requestValueCollection["__PREVIOUSPAGE"] != null) { try { path = VirtualPath.CreateNonRelativeAllowNull(DecryptString(this._requestValueCollection["__PREVIOUSPAGE"], Purpose.WebForms_Page_PreviousPageID)); } catch { this._pageFlags[8] = true; } if ((path != null) && (path != this.Request.CurrentExecutionFilePathObject)) { this._pageFlags[8] = true; this._previousPagePath = path; } } } } if (this.MaintainScrollPositionOnPostBack) { this.LoadScrollPosition(); } if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "Begin PreInit"); } if (EtwTrace.IsTraceEnabled(5, 4)) { EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_PRE_INIT_ENTER, this._context.WorkerRequest); } this.PerformPreInit(); if (EtwTrace.IsTraceEnabled(5, 4)) { EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_PRE_INIT_LEAVE, this._context.WorkerRequest); } if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "End PreInit"); } if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "Begin Init"); } if (EtwTrace.IsTraceEnabled(5, 4)) { EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_INIT_ENTER, this._context.WorkerRequest); } this.InitRecursive(null); if (EtwTrace.IsTraceEnabled(5, 4)) { EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_INIT_LEAVE, this._context.WorkerRequest); } if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "End Init"); } if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "Begin InitComplete"); } this.OnInitComplete(EventArgs.Empty); if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "End InitComplete"); } if (this.IsPostBack) { if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "Begin LoadState"); } if (EtwTrace.IsTraceEnabled(5, 4)) { EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_LOAD_VIEWSTATE_ENTER, this._context.WorkerRequest); } this.LoadAllState(); if (EtwTrace.IsTraceEnabled(5, 4)) { EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_LOAD_VIEWSTATE_LEAVE, this._context.WorkerRequest); } if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "End LoadState"); this.Trace.Write("aspx.page", "Begin ProcessPostData"); } if (EtwTrace.IsTraceEnabled(5, 4)) { EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_LOAD_POSTDATA_ENTER, this._context.WorkerRequest); } this.ProcessPostData(this._requestValueCollection, true); if (EtwTrace.IsTraceEnabled(5, 4)) { EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_LOAD_POSTDATA_LEAVE, this._context.WorkerRequest); } if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "End ProcessPostData"); } } if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "Begin PreLoad"); } this.OnPreLoad(EventArgs.Empty); if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "End PreLoad"); } if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "Begin Load"); } if (EtwTrace.IsTraceEnabled(5, 4)) { EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_LOAD_ENTER, this._context.WorkerRequest); } this.LoadRecursive(); if (EtwTrace.IsTraceEnabled(5, 4)) { EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_LOAD_LEAVE, this._context.WorkerRequest); } if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "End Load"); } if (this.IsPostBack) { if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "Begin ProcessPostData Second Try"); } this.ProcessPostData(this._leftoverPostData, false); if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "End ProcessPostData Second Try"); this.Trace.Write("aspx.page", "Begin Raise ChangedEvents"); } if (EtwTrace.IsTraceEnabled(5, 4)) { EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_POST_DATA_CHANGED_ENTER, this._context.WorkerRequest); } this.RaiseChangedEvents(); if (EtwTrace.IsTraceEnabled(5, 4)) { EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_POST_DATA_CHANGED_LEAVE, this._context.WorkerRequest); } if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "End Raise ChangedEvents"); this.Trace.Write("aspx.page", "Begin Raise PostBackEvent"); } if (EtwTrace.IsTraceEnabled(5, 4)) { EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_RAISE_POSTBACK_ENTER, this._context.WorkerRequest); } this.RaisePostBackEvent(this._requestValueCollection); if (EtwTrace.IsTraceEnabled(5, 4)) { EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_RAISE_POSTBACK_LEAVE, this._context.WorkerRequest); } if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "End Raise PostBackEvent"); } } if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "Begin LoadComplete"); } this.OnLoadComplete(EventArgs.Empty); if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "End LoadComplete"); } if (this.IsPostBack && this.IsCallback) { this.PrepareCallback(callbackControlID); } else if (!this.IsCrossPagePostBack) { if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "Begin PreRender"); } if (EtwTrace.IsTraceEnabled(5, 4)) { EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_PRE_RENDER_ENTER, this._context.WorkerRequest); } this.PreRenderRecursiveInternal(); if (EtwTrace.IsTraceEnabled(5, 4)) { EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_PRE_RENDER_LEAVE, this._context.WorkerRequest); } if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "End PreRender"); } } } if ((this._legacyAsyncInfo == null) || this._legacyAsyncInfo.CallerIsBlocking) { this.ExecuteRegisteredAsyncTasks(); } this.ValidateRawUrlIfRequired(); if (includeStagesAfterAsyncPoint) { if (this.IsCallback) { this.RenderCallback(); } else if (!this.IsCrossPagePostBack) { if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "Begin PreRenderComplete"); } this.PerformPreRenderComplete(); if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "End PreRenderComplete"); } if (context.TraceIsEnabled) { this.BuildPageProfileTree(this.EnableViewState); this.Trace.Write("aspx.page", "Begin SaveState"); } if (EtwTrace.IsTraceEnabled(5, 4)) { EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_SAVE_VIEWSTATE_ENTER, this._context.WorkerRequest); } this.SaveAllState(); if (EtwTrace.IsTraceEnabled(5, 4)) { EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_SAVE_VIEWSTATE_LEAVE, this._context.WorkerRequest); } if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "End SaveState"); this.Trace.Write("aspx.page", "Begin SaveStateComplete"); } this.OnSaveStateComplete(EventArgs.Empty); if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "End SaveStateComplete"); this.Trace.Write("aspx.page", "Begin Render"); } if (EtwTrace.IsTraceEnabled(5, 4)) { EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_RENDER_ENTER, this._context.WorkerRequest); } if (str != null) { this.ExportWebPart(str); } else { this.RenderControl(this.CreateHtmlTextWriter(this.Response.Output)); } if (EtwTrace.IsTraceEnabled(5, 4)) { EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_RENDER_LEAVE, this._context.WorkerRequest); } if (context.TraceIsEnabled) { this.Trace.Write("aspx.page", "End Render"); } this.CheckRemainingAsyncTasks(false); } } } catch (ThreadAbortException exception1) { HttpApplication.CancelModuleException exceptionState = exception1.ExceptionState as HttpApplication.CancelModuleException; if ((((includeStagesBeforeAsyncPoint & includeStagesAfterAsyncPoint) && (this._context.Handler == this)) && ((this._context.ApplicationInstance != null) && (exceptionState != null))) && !exceptionState.Timeout) { this._context.ApplicationInstance.CompleteRequest(); ThreadResetAbortWithAssert(); } else { this.CheckRemainingAsyncTasks(true); throw; } } catch (ConfigurationException) { throw; } catch (Exception exception2) { PerfCounters.IncrementCounter(AppPerfCounter.ERRORS_DURING_REQUEST); PerfCounters.IncrementCounter(AppPerfCounter.ERRORS_TOTAL); if (!this.HandleError(exception2)) { throw; } } }

以上就是关于ASP.NET页面生命周期的详细内容介绍,希望对大家的学习有所帮助。

您可能感兴趣的文章:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wjwdfy.html