28 Mart 2016 Pazartesi

.Net Mvc Error Handling

Yorum Bırak
Asp.Net Mvc frameworkte, yapılan işlemler soncunda alınan hatalar için hata sayfasına yönlendirme işlemi yapmak için  Global.asax dosyasındaki Application_Error metodunu aşağıdaki şekilde düzenleyebiliriz:

protected void Application_Error(object sender, EventArgs e)
{
   Exception exception = Server.GetLastError();
   // Exceptionu logluyoruz.

   ILogger logger = Container.Resolve<ILogger>();
   logger.Error(exception);

   Response.Clear();

   HttpException httpException = exception as HttpException;

   RouteData routeData = new RouteData();
   routeData.Values.Add("controller", "Error");

   if (httpException == null)
   {
       routeData.Values.Add("action", "Index");
   }
   else //http exception handle kısmı
   {
       switch (httpException.GetHttpCode())
       {
          case 404:
              // Sayfa bulunamadı hatası için
              routeData.Values.Add("action", "HttpError404");
              break;
          case 500:
              // Server hatası için.
              routeData.Values.Add("action", "HttpError500");
              break;

           // default hata için genel bir hata sayfası 
           default:
              routeData.Values.Add("action", "General");
              break;
      }
  }           

  // Pass exception details to the target error View.
  routeData.Values.Add("error", exception);

  // serverdaki hatayı temizler.
  Server.ClearError();


  Response.TrySkipIisCustomErrors = true; 

  // hedef controllerı çağır ve routedatayı pass et.
  IController errorController = new ErrorController();
  errorController.Execute(new RequestContext(    
       new HttpContextWrapper(Context), routeData));
}

burada en çok karşılaşılan 404 ve 500 hataları için yönlendirme bulunmakta, diğer hata kodları için de switch case bloğu için tanımlama yapabilirsiniz.

0 yorum:

Yorum Gönder