Routing in MVC
Hi all,
I'm trying to do something with unhandled exceptions.
For some reason, it is very hard to show an error page if an unhandled exception occurs. I found a way to redirect 404, 403 etc. using an ErrorController. A 500 exception however always shows inside the active MVC view.
What works is something like this (simplified code):
try return View("Index", model);catch (Exception) return RedirectToRoute(ErrorControllerRoute.GetInternalServerError);This RedirectToRoute will redirect to:
I wanted to do something like this in the OnException override of my BaseController class like this:
protected override void OnException(ExceptionContext filterContext) filterContext.Result = RedirectToRoute(ErrorControllerRoute.GetInternalServerError); base.OnException(filterContext);However, that is not working. The URL it generates in this case is:
So, it looks like the ErrorController class is ignored.
Any idea how this works within Sitefinity?
Hello ,
You can redirect to a controller route the following way:
filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new controller = "Controller", action = "Error"));public override void OnException(ExceptionContext filterContext) Exception ex = filterContext.Exception; Log.Write(ex, ConfigurationPolicy.ErrorLog); if (!string.IsNullOrEmpty(this.View)) this.View = HandleErrorAttributeCustom.defaultErrorView; base.OnException(filterContext); @model HandleErrorInfo<h1>Error</h1><p>@Model.Exception.ToString()</p>