Use the following key for the events below:
Black - every time page is processed
Red - only if the request is transacted
Green - only on postback
Blue - only if tracing is enabled
| Begin Transaction (only when transactions are enabled for the page) | ||
| Begin Transaction | ProcessRequestTransacted() | |
|
|
TransactedCallback() on -------------------- Process Request Main -------------------- (described below) Transactions.InvokeTransacted -- parts of the request that need to be done under transacted context |
|
| Process Request Main (every page, this is the main execution path) | ||
| Init | InitRecursive() Raise OnInit (recursive) Begin tracking viewstate |
|
| LoadViewState | LoadPageViewState() LoadPageStateFromPersistenceMedium() |
|
| ProcessPostData1 | ProcessPostData(_requestValueCollection, true /*
BeforeLoad */); Hand postback data to the controls that exist before Page_Load Page.Validate() |
|
| Load | LoadRecursive(); Fire OnLoad() (recursive) |
|
| ProcessPostData2 | ProcessPostData(_leftoverPostData, false /*
BeforeLoad */); Hand postback data to controls added in Load (using LoadControl, for example) |
|
| Raise ChangedEvents | RaiseChangedEvents() RaisePostDataChangedEvent() on each control with postback data that is not an IPostBackEventHandler |
|
| Raise PostBackEvent | RaisePostBackEvent(_requestValueCollection) RaisePostBackEvent() on the control that caused the postback |
|
| PreRender | PreRenderRecursive() if Page.Visible EnsureChildControls() -- creates controls if they haven't already been created by databinding Fire OnPreRender (recursive) |
|
| Build Trace Tree | BuildProfileTree("ROOT", EnableViewState) | |
| SaveViewState | SavePageViewState() Save state recursively for the page and it's controls |
|
| Render |
RenderControl(CreateHtmlTextWriter(Response.Output)) if Page.Visible Render() (recursive) |
|
| Finish Transaction (only when transactions are enabled for the page) | ||
| End Transaction | Fire OnAbortTransaction() or OnCommitTransaction() | |
| End Trace (only when Tracing is enabled) | ||
| Trace.EndRequest | if PageOutput Trace.Render |
|
| Process Request Cleanup (every
request) * Set Request and Response to null |
||
| UnloadRecursive | UnloadRecursive() Fire OnUnload() (recursive) Dispose() |
|