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
>