Asp.Net Hata Sayfaları
Asp.net ile hata sayfalarını nasıl oluşturabileceğiz ve neden hata sayfası oluşturmak önemlidir konularına değineceğiz. Öncelikle oluşturduğumuz sitelerde hata sayfası kullanmalıyız? En basit örneği ile arama motorlarının sitemizdeki sayfalarımızı indexlediğini düşünelim. Arama motorlarının indexlemiş olduğu herhangi bir sayfası biz silebiliriz ve arama motorları silinen bu linki tespit etmesi uzun sürebilir veya eski indexlenen sayfaları silmeyebilir.
Böyle bir durumda silinen sayfaya arama motorları sayesinde ulaşan kullanıcı sunucunun standart hata sayfası ile karşılaşacaktır. Pek hoş olmayan bir durumdur bu. Böyle bir durum ile karşılaşmamak için kendi oluşturduğumuz hata sayfasına kullanıcıyı yönlendirebilir ve daha hoş bir hata sayfası ile “aramış olduğunuz içerik mevcut değil aşağıdaki içeriklere göz atmanızı tavsiye ederiz” (artık mesaj size kalmış ) gibi kullanıcıyı siteden kaybetmek yerine farklı içeriğe yönlendirebilir siniz.
Asp.Net hata sayfalarını web.config dosyası ile yönetebilirsiniz. Aşağıdaki örnekte verdiğim kodları <system.web> tagı arasında yazdığınızda, <customErrors> tagı altında bulunan her <error> tagı sizin yeni hata tanımlamanızı sağlayacaktır. <error> tagı içerisinde bulunan statusCode parametresi hata kodlarını ve redirect parametresi ise ilgili hata sonucu gideceği sayfayı belirtecektir.
[csharp]
<customErrors mode="On">
<error statusCode="400" redirect="~/ErrorPage.aspx?eid=400"/>
<error statusCode="401" redirect="~/ErrorPage.aspx?eid=401"/>
<error statusCode="403" redirect="~/ErrorPage.aspx?eid=403"/>
<error statusCode="404" redirect="~/ErrorPage.aspx?eid=404"/>
<error statusCode="500" redirect="~/ErrorPage.aspx?eid=500"/>
</customErrors>
[/csharp]
Örneğimde ErrorPage.aspx sayfası oluşturdum ve <error> tagında bulunan redirect parametresinde “eid” değerini ErrorPage.aspx sayfasına QueryString ile gönderiyorum ve ErrorPage.aspx sayfasının Page_Load olayında QueryString değerini okuyup ekrana ilgili hata kodunu yazdırıyorum.
[csharp]
lblError.Text = "Bu bir <b>" + Request.QueryString["eid"] + "</b> hatasıdır.";
[/csharp]
Yararlı olması dileğiyle…