2 Haziran 2016 Perşembe

Global.Asax

      Herkese merhaba, bu yazımda web sitelerinde kullanılan "Global.Asax" dosyası ve niteliklerinden bahsediyor olacağım. Global Application Class olarak tanımlanan Global.Asax dosyası Web.Config gibi özel bir dosyadır ve web sitesinde sadece 1 tane bulunur. Sadece ve sadece "Server" üzerinde çalışır, dışarıdan çağırılamaz. Uygulama seviyesinde olaylar, nesneler ve değişkenleri yönetmek amacında kullanılır. Nasıl ki her web sayfasının kendine ait bir life cycle (Init, PreInit,OnLoad vb) varsa, uygulama düzeyinde Global.asax dosyasının da life cycle' ı vardır.
      Bu dosya üzerinde tanımlanan bazı yordamlarda site ile ilgili genel işler yaptırılabilir.Örnek verecek olursak herhangi bir .aspx sayfasında "Page_Load()" metodunda sayfa yüklenirken olayları nasıl yönetebiliyorsak, uygulama düzeyinde de Global.asax içerisinde ki "Application_Start()" metodunda web sitesi ilk kez başlatılırken ki olayları yönetebiliyoruz. 
     Projemize sağ tıklayarak Add - Global Application Class dersek, projemizin kök dizininde Global.Asax dosyamızı oluşturmuş ve aşağıdaki yordamlar hazır halde bulmuş oluruz.



























Global.asax içerisindeki metodlara bakacak olursak:

Application_Start : Uygulama, Web Server (IIS) üzerinde ilk Start edildiği anda sadece 1 kez çalışan yordamdır.Bireysel kullanıcı bazlı çalışmaz. Uygulama ilk başladığı andaki olayları yönetmek için kullanılır.

Application_End : Uygulama,Web Server (IIS)  üzerinde sonlanırken çalışır.

Session_Start : Bireysel kullanıcı uygulamaya ilk kez eriştiğinde, yani client' a ait session başlarken çalışır.

Session_End : Bireysel kullanıcıya ait session sonlandığında çalışır. InProc modda kullanıcı uygulamadan çıkarsa çalışır.

Application_BeginRequest : Server'e uygulama düzeyinde gelen her Request' te (istekte) çalışır.

Application_EndRequest : Uygulamaya gelen Request tamamlanıp sonlandığında çalışır.

Application_PreRequestContent : İçerik bilgileri tarayıcıya gönderilmeden hemen önce çalışır

Application_PreSendRequestHeaders : Başlık bilgileri tarayıcıya gönderilmeden hemen önce çalışır.

Application_AuthenticateRequest : Kullanıcı kimlik doğrulaması yapılmadan hemen önce çalışır.

Application_AuthorizeRequest : Kullanıcı yetkilendirilmesinden önce çalışır.

Global.asax dosyasının kullanım amaçlarına bir kaç örnek verecek olursak;

- Uygulama başlar başlamaz çalışmaya başlayacak, ve uygulama boyunca çalışmaya devam edecek bir zamanlanmış görev "Application_Start" metodunda tetiklenebilir.
- Uygulama bazında oluşacak hata loglanması ve yönetimi "Application_Error" metodunda yazılabilir
- Uygulamadaki anlık kullanıcı sayısını bulmak için "Session_Start" ve  "Session_End" metodları kullanılabilir.

Örnek - 1 :
  Uygulamadaki anlık kullanıcı sayısını bulmak isteyelim. Hemen bir "Web Site" oluşturup, Global.asax dosyasını ekliyoruz. İçeriği aşağıdaki gibi değiştirip, Application State içine uygulamanın herhangi bir sayfasında kullanılmak üzere kullanıcı sayısını atıyorum.






    
sonra herhangi bir .aspx sayfası oluşturup, içerisinde kullanıcı sayısını Application State üzerinden alıp ekrana basalım.













Sonuç :






Hatta "Session_Start" matodu içinde kullanıcı bazında session timout süresini 1 dk olarak ayarlayıp, süre sonunda "Session_End" metoduna düştüğünü izleyebilirsiniz.








Örnek - 2 :
    Şimdi ise uygulamanın herhangi bir sayfasında alınabilecek herhangi bir hata durumunda, uygulamayı oluşturmuş olduğumuz hata sayfasına yönlendirip tüm hataları aynı formatta görmeyi deneyelim.Bu durumda genel bir hata sayfası yapıp, bu hata sayfasına uygulamanın herhangi bir yerinde oluşacak hatada yönlendirme işlemi için Global.asax dosyasını kullanmamız gerekmektedir.

Hata sayfamızı oluşturup QueryString ile gönderilen parametreyi ekrana basan bir yapı oluşturuyoruz.












Sonra sayfamıza bir textbox bir de buton ekleyip, butonun click eventinde hata yapımızı tanımlıyoruz. Tabi burada sayfaya ait "Page_Error" metodunu çağırıp son oluşan hatayı bir üst katmana fırlatıyoruz.




























En son Global.asax içerisindeki "Application_Error" metodunda uygulamanın herhangi bir noktasında oluşan hatayı genel hata sayfama yönlendirerek, kullanıcıya mesajı gösteriyorum.
















Şimdi hatalı bir giriş yaparak testimi gerçekleştiriyorum ve sonuç :


            Sonuç olarak unutulmamalıdır ki, Global.asax dosyasında yapılan işlerde dikkatli olunmalıdır, çünkü bu yapılan işler sonucunda web sitesini restart etmek ve Application state içerisinde yer alan tüm verileri kaybetmek zorunda kalabiliriz.

Hiç yorum yok:

Yorum Gönder