ASP.NET: Monitoring of web page life cycle
I wrote simple code which is showing order of execution of events and protected methods related to the page life cycle.
I simply added output messages into the each event and protected method of Page and Control (UserControl which is located on that page). This is an example of how I did it:
...
protected void Page_Init(object sender, EventArgs e)
{
Container.messageCollection.Add("P: Page_Init");
}
...
protected override void OnInit(EventArgs e)
{
Container.messageCollection.Add("P: Before base.OnInit");
base.OnInit(e);
Container.messageCollection.Add("P: After base.OnInit");
}
etc.
After filling a collection I just write messages out in order how they were added.
And this is an output result:
1: P: Before base.OnPreInit
2: P: Page_PreInit
3: P: After base.OnPreInit
4: C: Before base.OnInit
5: C: Page_Init
6: C: After base.OnInit
7: P: Before base.OnInit
8: P: Page_Init
9: P: After base.OnInit
10: P: Before base.OnInitComplete
11: P: Page_InitComplete
12: P: After base.OnInitComplete
13: P: Before base.OnPreLoad
14: P: Page_PreLoad
15: P: After base.OnPreLoad
16: P: Before base.OnLoad
17: P: Page_Load
18: P: After base.OnLoad
19: C: Before base.OnLoad
20: C: Page_Load
21: C: After base.OnLoad
22: P: Before base.OnLoadComplete
23: P: Page_LoadComplete
24: P: After base.OnLoadComplete
25: P: Before base.OnPreRender
26: P: Page_PreRender
27: P: After base.OnPreRender
28: C: Before base.OnPreRender
29: C: Page_PreRender
30: C: After base.OnPreRender
31: P: Before base.OnPreRenderComplete
32: P: After base.OnPreRenderComplete
33: C: Before base.OnUnload
34: C: Page_Unload
35: C: After base.OnUnload
36: P: Before base.OnUnload
37: P: Page_Unload
38: P: After base.OnUnload
First "C" letter or red color are messages from UserControl side. Messages with "P" letter or blue color represent page level.
So, now you can see an order how events in page and contol occur during page life cycle.