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