Hepimiz web sitelerde dolaşırken bazı hatalar almış ve aldığımız hatalar sonucunda hata sayfalarına yönlendirilmişizdir. Bu başlık altında hata filtrelerini ve bu hata sayfalarının nasıl yapılandırıldığını inceleyeceğiz.
Öncelikle elimizdeki ActionResult’un içerisinde bir exception koyup çalıştıralım. Sayfanın çalışmadığını exceptiona yakalandığını göreceğiz
public ActionResult Index() { throw new FormatException(); return View(); }
Daha sonra web.config içerisinde system.web taglerinin arasına <customErrors mode=”On”></customErrors> etiketini ekleyelim. Bu etiket bize sayfada bir hata ile karşılaşıldığında, sayfanın çalışmamasındansa bir hata sayfasına yönlenmesini söyler.
<system.web> <customErrors mode="On"></customErrors> <compilation debug="true" targetFramework="4.5.2" /> <httpRuntime targetFramework="4.5.2" /> <httpModules> <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" /> </httpModules> </system.web>
Peki bizim yönlendiğimiz bu hata sayfası tam olarak nerede tanımlı?
View -> Shared -> Error.cshtml
Peki bu sayfa karşımıza nasıl çıkıyor.
Global.asax.cs : içerisinde application_start adında bir metot barındırır ve uygulama ilk başladığında geçerli ve çalıştırılcak metotlar bunun içerisinde bulunur. Application_startın içerisinde FilterConfig ile hata yakalama sınıfının tüm uygulama tarafından kullanılması sağlanmıştır.
Eğer hata oluştuğunda default sayfaya değil de kendi ayarladığımız başka bir sayfaya yönlenmesini istersek , View klasörünün altında shared klasörüne isteklerimiz doğrultusunda sayfayı tanımlarız ve action metoda aşağıdaki eklentiyi yaparız.
[HandleError(ExceptionType =typeof(FormatException),View="Hata")] public ActionResult Index() { throw new FormatException(); return View(); }
Bu eklenti ayrıca bize farklı hata tipleri için farklı sayfalara yönlenebilme şansı sunar.
IEXCEPTION SINIFI