08 December 2016

ASP.Net Application

Application nesnesi ASP.NET web sitelerinde çalışan uygulamayı temsil eder ve uygulama adına işlemler yapabilmemizi sağlar. Session( Oturum) ve Application (Uygulama) başlatma ve bitirme mantığını yönetmek için geliştirilmiş global.asax dosyasına gözatalım. Global.asax (Global Application Class – Genel Uygulama Sınıfı) dosyası görsel bir arayüzü olmayan ve çalışan uygulamanın metotlarının yakalanmasını sağlayan dosya olarak ASP.NET web sitesi projelerinde kullanılabilmektedir.

Application Nesnesinin Olayları

Application nesnesinin olaylarından en çok kullanacağımız bazı olayların hangi aşamalarda tetikleneceği ve buralarda ne gibi işlemler yapabileceğimiz konularına değinelim.

Application_Start: Uygulamaya ilk istek geldiğinde tetiklenir. Buradaki en önemli durumlardan birisi bu olayın sadece ilk istekte tetikleneceği ve uygulama bir daha başlayana kadar tetiklenmeyeceğidir. Ne zaman ki uygulama, web sunucusu veya sunucu bilgisayarı kapatılıp tekrar açılır, Start olayı o zaman tetiklenecektir.

Session_Start: Kullanıcı siteye girdiğinde tetiklenir. Session’ın timeout süresinin geçmesi durumunda kullanıcı bir talepte daha bulunursa bu olay istemcinin yeni bir kullanıcı olarak sitemize geldiğini düşünerek tekrar tetiklenecektir. Kullanıcının sitemizi ilk ziyareti esnasında gerçekleştirilebilecek işlemler bu olay dahilinde gerçekleştirilebilir.

Application_BeginRequest: Uygulamadan bir istekte bulunduğumuzda tetiklenir. Gelen talebin durumuna göre farklı işlemler yapılmak istenirse(farklı sayfalara yönlendirme, farklı içerik görüntüleme, sayfaya veya dosyaya erişimi engelleme… gibi) bu olay ele alınabilir. URL Rewriting veya belirli dosyaya erişimin kontrol edilmesi gibi durumlarda kullanılabilir.

Application_AuthenticateRequest: Uygulamaya giriş yapmak istediğimizde tetiklenir. Giriş yapan kullanıcının kimliğine bakılarak yetkilendirme, yönlendirme gibi işlemler bu olay sayesinde ele alınabilir. Örneğin giriş yapan kullanıcıyı belirli bir role atama işlemi burada yapılabilir. Yine giriş yapan kullanıcının bilgisayarına cookie gönderme işlemi de bu olay sayesinde kolayca ele alınabilir.

Application_Error: Uygulamada hata meydana geldiğinde tetiklenir. Bu hata sunucu tarafında çalışacak kodlardan dolayı oluşan bir exception olabileceği gibi, HTTP durum kodlarından (404-dosya bulunamadı-,403-erişim yok-… gibi) oluşan herhangi bir hata da olabilir. Özellikle log dosyalarında hata kayıtlarının tutulması işlemi için uygulamamızın en ideal noktası Application’ın Error olayıdır.

Session_End: Session sonlandığında (browser kapandığında değil) tetiklenir. Kullanıcı sitemizde oturum açtıktan sonra Session’ın timeout değeri süresince bir işlem yapmazsa bu olay tetiklenir. Genellikle Session_Start’ta yapılan işlemlerle ilişkili olarak kullanıcıların çıkışlarıyla ilgili işlemler gerçekleştirilebilir.

Application_End: Uygulama sonlandığında tetiklenir. Web sitesi durdurulduğunda, IIS veya sunucu bilgisayarı durdurulduğunda ya da kapatıldığında tetiklenir. Bu olay içerisinde ise genellikle Start olayında başlatılan, açılan kaynakların, nesnelerin durdurulması ve kapatılması gibi işlemler gerçekleştirilebilir.

Örnek:

protected void Application_Start(object sender, EventArgs e)
 {
 //uygulamaya ilk istek geldiğinde tetiklenir
 Application["userHit"] = 0;
 }
protected void Session_Start(object sender, EventArgs e)
 {
 //kullanıcı siteye girdiğinde tetiklenir
 Application.Lock();
 int userHit = Convert.ToInt32(Application["userHit"]);
 userHit++;
 Application["userHit"] = userHit;
 Application.UnLock();
}
protected void Session_End(object sender, EventArgs e)
 {
 //session sonlandığında (browser kapandığında değil) tetiklenir
 Application.Lock();
 int userHit = Convert.ToInt32(Application["userHit"]);
 userHit--;
 Application["userHit"] = userHit;
 Application.UnLock();
 }

Trackbacks

  1. […] Application State (Uygulama Durumu) […]