根据Lutz Roeder的Reflector对System.Web.dll的反编译,下面是HttpApplication,Page和Control对象的主要方法和事件的流程
PostBack | |
Page/Control Event | |
CallBack |
HttpApplication | Page | Control |
---|---|---|
BeginRequest | ||
AuthenticateRequest | ||
DefaultAuthentication | ||
PostAuthenticateRequest | ||
AuthorizeRequest | ||
PostAuthorizeRequest | ||
ResolveRequestCache | ||
PostResolveRequestCache | ||
MapHttpHandler | Construct | |
PostMapRequestHandler | ||
AcquireRequestState (Session) | ||
PostAcquireRequestState | ||
PreRequestHandlerExecute | ||
CallHandler | DeterminePostBackMode | |
LoadScrollPosition | ||
PerformPreInit --PreInit --InitializeThemes --ApplyMasterPage |
||
InitRecursive (--ResolveAdapter --ApplySkin --Init --TrackViewState) |
ResolveAdapter | |
InitRecursive | ||
ApplySkin | ||
Init | ||
TrackViewState | ||
InitComplete | ||
LoadAllState --LoadPageStateFromPersistenceMedium --LoadViewStateRecursive |
LoadControlStateInternal --LoadControlState |
|
LoadViewStateRecursive --LoadViewState |
||
ProcessPostData | ||
PreLoad | ||
LoadRecursive (--Load) |
LoadRecursive --Load |
|
ProcessPostData | ||
RaiseChangedEvents | ||
RaisePostBackEvent | ||
LoadComplete | ||
RaiseCallbackEvent --return |
||
PreRenderRecursiveInternal (--PreRender) |
PreRenderRecursiveInternal --PreRender |
|
ExecuteRegisteredAsyncTasks ** | ||
PerformPreRenderComplete --PreRenderComplete |
||
SaveAllState --SaveViewStateRecursive --SavePageStateToPersistenceMedium |
SaveControlStateInternal --SaveControlState |
|
SaveViewState --SaveViewStateRecursive |
||
SaveStateComplete | ||
RenderControl |
RenderControl --RenderControlInternal ----Render ------RenderChildren --------RenderChildrenInternal |
|
PostRequestHandlerExecute | ||
ReleaseRequestState (Session) | ||
PostReleaseRequestState | ||
CallFilter -- Response.FilterOutput | ||
UpdateRequestCache | ||
PostUpdateRequestCache | ||
EndRequest |
** 参考 Jeff Prosise在MSND杂志10月期的文章
Asynchronous Pages in ASP.NET 2.0