ASP.NET’te genel hata yönetimi

Web uygulamalarında, kullanım alanlarının geniş olması, tanımlı tanımsız binlerce ziyaretçiye hizmet veriyor olması ve bu ziyaretçilerin farklı kullanım seviyelerine sahip olmaları sebebiyle hata oluşma ihtimali yüksektir. Bu ihtimali aza indirgemek için kullanıcı ile sunucu arasında çift yönlü aktarılan verilerin daima doğrulama işlemlerinden geçirilmesi gerekmektedir. Böylece kullanıcının, uygulamaya zarar vermesi veya sunucunu ziyaretçiye doğru olmayan bilgiyi gönderme ihtimali azaltılmış olur. Buna rağmen örneğin sistemde olmayan bir sayfanın istenmesi gibi bazen düşündüğümüz ihtimallerin dışında da hatalar oluşabilir. Bu nedenle sitenin herhangi bir alanında meydana gelen tüm hataları yönetiyor olmamız lazım. Bunu yapmanın farklı yolları olsa da ASP.NET, bu amaçla etkili bir hata yönetimi(error handling) sunmaktadır.
ASP.NET uygulamasında tüm request ve response’lerin yönetildiği, bunlara ait eventlerin yakalandığı Global.asax dosyası uygulamanın herhangi bir bölümünde herhangi bir kaynaktan dolayı meydana gelen hataların yakalanacağı Application_Error() metodunu sunar. Bu metodu kullanarak, hata meydana geldiği zaman kullanıcıya ASP.NET’in tipik hata sayfasını göstermek yerine bizim oluşturacağımız mesajları göstereceğiz. Böylece hem kullanıcıyı doğru yönlendirmiş oluruz hem de uygulama yöneticisi olarak kendimizi bu durumdan haberdar etmiş oluruz.
Web uygulamasında hata meydana geldiği zaman HttpApplication sınıfına ait HttpServerUtility türündeki Server property’sinin GetLastError property’si set edilmiş olur. Bu property, System.Exception türünde değer döndürür. Bu değerin ilgili property’lerini okuyup gerekli hata mesajını oluşturacağız.
void Application_Error(object sender, EventArgs e)
{
Exception ex = Server.GetLastError().GetBaseException();
string HataMesaj = “”;
HataMesaj = ”
Bu metod içerisinde hata mesajını doğrudan ziyaretçiye, yönlendirme amacıyla gösterebilir, loglama amacıyla veritabanına yazdırabilir veya kendimize mail attırabiliriz. Aşağıdaki tabloda metodun VB.NET versiyonunu bulabilirsiniz.
Private Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
Dim ex As Exception = Server.GetLastError().GetBaseException()
Dim HataMesaj As String = “”
HataMesaj = ”
Bu genel hata yönetimi, .aspx uzantılı istekleri destekler. Farklı dosya istemleri için özel bir yönetim gerçekleştirmek gerekir.

ASP.NET’te genel hata yönetimi” üzerine 4 düşünce

  1. counter

    örneğinizi kullandım. Fakat alt dizinlerdeki hataları bildirmiyor. benim ana dizininim altında birde /admin diye b ir alt klsör var. Orda hata olunca yakalamam lazım orayada mı asax dosyası atamam gerekiyor.

    Cevapla
  2. Ahmet Kaymaz Yazar

    Eğer alt dizin normal bir dosya diziniyse yani bir sanal dizin(virtual directory) değilse projenin altındaki bu dizin, root’ta tanımladığınız global.asax’ın etki alanında olacaktır. Yani bu dizin için ayrı bir config veya asax dosyası oluşturmanıza gerek bulunmamaktadır. Eğer sanal dizinse o zaman yeni bir proje olduğu için bu projeye özgü global.asax olmalıdır.

    Cevapla

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Time limit is exhausted. Please reload CAPTCHA.