ASP.NET tabanlı site hazırlarken gerek sunucu ile istemci arasındaki işleyişi izlemek gerekse web tabanlı özel kontrol geliştirirken request-response sürecindeki yol haritasını, Asp.NET yaşam döngüsünü bilmek sürece olan hakimiyetimizi artıracaktır. Asp.NET’in sayfa yaşam döngüsünde her request işleminde page nesnesi ve içindeki kontroller yeniden oluşturulur ve işlem sonucunda yok edilir. Bu oluşma-yok olma sürecinde bazı evre ve olaylar gerçekleşir. Bu evre ve olaylar, sayfa ve sayfa içerisindeki kontrollerin yaşam döngüsüyle ilintilidir. Burada Asp.NET yaşam döngüsünü hatırlayacak kadar burada özetlememiz faydalı olacaktır. Aşağıdaki tabloda sayfa ve kontrol bazlı yaşanan evreler gösterilmiştir.
| Aşama | Açıklama |
| Page request |
Page life cycle başlamadan önce bu aşama çalışır. Sayfa bir kullanıcı tarafından istendiği zaman Asp.NET, bu sayfanın parse ve compile edilip edilmeyeceğine veya sayfayı çalıştırmadan varsa cachedeki versiyonunu gönderip göndermeyeceğine karar verir. |
| Start |
Yaşam döngüsünün ilk adımını temsil eden bu süreçte page nesnesinin Request ve Response gibi property’leri set edilir. Ayrıca page nesnesi, gönderilen requestin bir Postback sonucu mu yoksa yeni bir request olarak gelip gelmediğini belirler ve ona göre IsPostBack property’sini set eder. IsPostBack, sayfanın Postback modunu bildirir. Bu aşamada ek olarak sayfanın UICulture propertysi de set edilir. |
| Page initialization |
Sayfanın oluşturulma aşamasında sayfa üzerindeki kontroller, erişilebilir duruma gelir ve her kontrolün UniqueID propertysi set edilir. Eğer o anki request, bir Postback sonucu gerçekleşmişse bu aşamada Postback data henüz yüklenmemiş ve kontrollerin değeri Viewstate’e göre yenilenmemiştir. |
| Load |
Load aşamasında eğer geçerli request bir postback ise kontrollerin değeri ve durumu Viewstate içeriğine göre şekillenir. |
| Validation |
Varsa sayfa üzerindeki validator kontrollerin Validate() metodu çağrılır. Validate() metodu, page nesnesi ve içindeki kontrollerin her birinin IsValid property’sini set eder. Hatırlanacağı gibi IsValid property’si, kontrolün doğrulama işleminin başarılı olup olmadığını bildirir. |
| Postback event handling |
Eğer request bir Postback sonucu gerçekleşmişse, Postback’i gerçekleştirmiş veya durumu değişmiş kontrollerin ilgili eventleri tetiklenir. |
| Rendering |
Render işleminden önce page ve kontroller için Viewstate nesnesi kaydedilir. Render aşamasında page nesnesi, her kontrolün Render() metodunu çalıştırır. Render() metodu, text writer nesnesini kullanarak kontrolün outputunu page’in Response propertysine ait OutputStream‘e (HTTP ile gidecek olan binary içerik) yazar. |
| Unload |
Unload evresi, sayfa tümüyle render edildikten ve istemciye gönderildikten sonra çağrılır. Bu durumda sayfa, artık hafızan kaldırılmaya (discard) hazırdır. Unload aşamasında, Request ve Response nesneleri temizlenmiş olur. |

Döngünün bu evrelerinde zamanı geldikçe ilgili event ve metodlar otomatik olarak tetiklenir. Bunları da şu şekilde özetleyebiliriz;
1.Page_PreInit
IsPostBack property’si okunup sayfanın ilk defa process edilip edilmediği öğrenilebilir. Dinamik kontrollerin oluşturulması, master page‘in programatik olarak uygulanması, theme propertysinin dinamik olarak set edilmesi bu metod içinde yapılır. Ayrıca bu metod içinde profile property’si okunabilir veya set edilebilir.
2.Page.Init + Control.Init
Döngünün ilk aşaması olan Initialization evresinde sayfaya ait control tree, tanımlı kontrollerle şekillenir ve önce page nesnesine ait Init eventi daha sonra her kontrolün ayrı Init eventi tetiklenir. Viewstate bilgisi henüz yüklenmemiştir.
3.Page.LoadViewState
Initialization aşamasından sonra ASP.NET, sayfanın Viewstate’ini yükler. Viewstate, sayfanın sunucuda en son process edilmiş durumunu içerir.
4. Page.ProcessPostData
Request ile birlikte gelmiş Postback data okunur ve ilgili kontrollere yüklenir
5. Page.Load + Control.Load
Sayfa üzerindeki kontroller, tümüyle yüklendikten sonra Load eventleri tetiklenir. Bu metoda, genellikle sayfa ilk defa çağrıldığı(Postback edilmediği) zaman yapılacak data binding işlemleri yazılır.
6. “Change” Events
Kontrollerin yeni değerleri(Postback) ile orijinal değerleri(Viewstate) karşılaştırılır ve durumu değişmiş kontrollerin ilgili eventleri tetiklenir.(TextChanged, SelectedIndexChanged …)
7. Validate
Sayfa üzerindeki validatorlerin server side eventleri tetiklenir. Böylece doğrulama işlemi sadece istemci tarafına bırakılmamış olur.
8. “Postback” Events
Postback işlemine neden olmuş kontrollerin eventleri çalışır. Örneğin bir buton tıklandığı zaman yapılacak işlemleri bu aşamada Button.Click, Button.Command gibi metodlarda bildiririz.
9. Page.PreRender + Control.PreRender
Sayfa render edilmeden ve Viewstate kayıt edilmeden önce yapılacak işlemler bu metodlarda yazılabilir. Özellikle kontroller üzerinde yapılacak son değişiklikler bu aşamada yapılır.
10. Page.SaveViewState
Kontrollerin yeni değerleri ve sayfanın durumu sunucuya yapılacak bir sonraki dönüşte hatırlansın diye Viewstate nesnesine kayıt edilir.
11. Page.Render
12. Page_Unload
Temizlik işlemlerinin yapıldığı bu evrede sayfa istemciye gönderilmiştir. Bu metodu açık kalmış dosya ve database bağlantıları kapatmak veya request-response ile ilgili loglama yapmak gibi işlemler için kullanılabilir.