Global.asax dosyası nedir ne işe yarar

Bu yazıda Global.asax dosyasının teorik olarak ne işe yaradığını ve nerelerde kullanıldığını anlamaya çalışarak, örnek bir Gloabal.asax dosyasını inceleyeceğiz. 

Asp.net uygulamalarında çalışan bir Application nesnemiz bulunmaktadır. Nasıl ki Asp.net te her sayfanın bir yaşam döngüsü bulunmakta (Inıt,PreInıt,Load vb.)  uygulama düzeyinde bu Application nesnemizinde bir yaşam döngüsü bulunmaktadır. Ve bu döngü içindeki eventlere (olaylara) Global.asax dosyası içinden müdahele edebiliyoruz.

Global Application Class (Genel uygulama sınıfı) şeklinde bir açılıma sahip olan Global.asax dosyası uygulama seviyesindeki olayları, nesneleri, değişkenleri yönetmek için kullanılır. Örnek olarak ; Nasıl ki bir .aspx dosyamızda o sayfaya ait, Page_Load() metodu ile sayfa yüklenirkenki olayları yönetiyoruz. İşte uygulama düzeyinde gerçekleşen olayları; örneğin Application_Start() uygulama başlatıldığında gerçekleşecekler , şeklinde uygulama düzeyinde gerçekleşen olayları yönetebiliyoruz.

Asp.net uygulamanız tek bir Global.asax dosyası içerebilir.

Projenize Sağ tıklayıp >Add new item > Global Application Class eklerseniz aşağıdaki gibi default bir görünüm elde ederseniz.

<%@ Application Language="C#" %>

<script runat="server">

    void Application_Start(object sender, EventArgs e) 
    {
        // Code that runs on application startup
        
    }
     
    
    void Application_End(object sender, EventArgs e) 
    {
        //  Code that runs on application shutdown

    }
        
    void Application_Error(object sender, EventArgs e) 
    { 
        // Code that runs when an unhandled error occurs

    }

    void Session_Start(object sender, EventArgs e) 
    {
        // Code that runs when a new session is started

    }

    void Session_End(object sender, EventArgs e) 
    {
        // Code that runs when a session ends. 
        // Note: The Session_End event is raised only when the sessionstate mode
        // is set to InProc in the Web.config file. If session mode is set to StateServer 
        // or SQLServer, the event is not raised.

    }
       
</script>

Global.asax dosyasının içerisindeki methodların ne işe yaradığına bakacak olursak ;

Application_Start : Uygulama ilk çağırıldığında/başlatıldığında gerçekleşecek olayları/durumları yönetmek için kullanılır. Uygulamayı çağıranilk talep geldiğinde bir kez başlatılır.

Session_Start : Bireysel bir kullanıcı uygulamaya ilk eriştiğinde başaltılır.

Session_End : InProc modunda çalışırken, bir kullanıcı uygulamadan ayrıldığında bu olay çalıştırılır.

Application_End : Uygulama sona erdiğinde başlatılır.

Application_Error : Uygulamanın herhangi bir yerinde bir hata meydana gelmesi ile çalıştırılır.

Peki Global.asax'ı tanıdıktan sonra ,bu dosya nerelerde kullanılabilir birkaç örnek verelim.

  • Uygulamada oluşan hataları tutmak için (Application_Error)
  • Uygulamadaki aktif kullanıcı sayısını bulmak için (Session_Start ,Session_End)

Global.asax dosyasının farklı methodlarıda bulunmaktadır. Uygulama bazında yönetmek istediğiniz olaylara bağlı olarak ilgili methodları kullanabilirsiniz. 

Yorumlar