Estoy desarrollando un MVC3 web site de la base y estoy en busca de una solución para la gestión de errores y Representar Vistas personalizadas para cada tipo de error. Así que imagina que tengo un "Error" el Controlador de donde su principal acción es la de "Índice" (error genérico de la página) y este controlador tendrá un par más de las acciones de los errores que pueden aparecer a los usuarios, como "Handle500" o "HandleActionNotFound".
Así que cada error que puede ocurrir en el sitio web pueden ser manejados por el "Error" el Controlador (ejemplos: "Controlador" o "Acción" no se encuentra, 500, 404, dbException, etc.).
Yo estoy usando el archivo de Sitemap para definir el sitio web de rutas (y no de la ruta).
Esta pregunta ya fue contestada, esta es una respuesta a Gweebz
Mi final applicaiton_error método es el siguiente:
protected void Application_Error() {
//while my project is running in debug mode
if (HttpContext.Current.IsDebuggingEnabled && WebConfigurationManager.AppSettings["EnableCustomErrorPage"].Equals("false"))
{
Log.Logger.Error("unhandled exception: ", Server.GetLastError());
}
else
{
try
{
var exception = Server.GetLastError();
Log.Logger.Error("unhandled exception: ", exception);
Response.Clear();
Server.ClearError();
var routeData = new RouteData();
routeData.Values["controller"] = "Errors";
routeData.Values["action"] = "General";
routeData.Values["exception"] = exception;
IController errorsController = new ErrorsController();
var rc = new RequestContext(new HttpContextWrapper(Context), routeData);
errorsController.Execute(rc);
}
catch (Exception e)
{
//if Error controller failed for same reason, we will display static HTML error page
Log.Logger.Fatal("failed to display error page, fallback to HTML error: ", e);
Response.TransmitFile("~/error.html");
}
}
}