Quiero usar Application_Error con mi proyecto MVC, pero no puedo hacerlo funcionar. Añado lo siguiente a mi archivo Global.asax: (. La sesión es sólo para pruebas Im que va a utilizar una base de datos para registrar el error, si consigo que esto funcione.)¿Cómo uso Application_Error en ASP.NET MVC?
protected void Application_Error(object sender, EventArgs e)
{
Exception objErr = Server.GetLastError().GetBaseException();
Session["Test"] = "Message:" + objErr.Message.ToString();
}
entonces trato de lanzar una excepción de mi HomeController y mi Home/Index View, pero solo activa Debug.
public ActionResult Index()
{
ViewData["Message"] = "Welcome to ASP.NET MVC!";
throw (new Exception());
return View();
}
En mi archivo Webconfig fijo una página defaulterror pero no redirige a la vista:
<customErrors defaultRedirect="Home/Error">
<error statusCode="403" redirect="NoAccess.htm" />
<error statusCode="404" redirect="FileNotFound.htm" />
</customErrors>
Tengo un problema con su solución. CustomErrors redirige directamente a la vista de Inicio/Errores sin activar el controlador. No sabía lo que era posible, pero cuando pongo un punto de depuración en el método de Error Action, la depuración nunca es llamada. La vista de error solo se muestra en la pantalla, pero la url sigue siendo la misma que la que desencadenó el error. Por ejemplo, si desencadenar un error en/Inicio/Trabajo obtendré la vista de error, pero la URL todavía está/Inicio/Trabajo – Poku
Hola @blowdart: mensaje cortesía de un nuevo usuario que no puede comentar: Esta respuesta es rotunda incorrecto. El problema es que llamar a Server.GetLastError() desde la clase de controlador no funciona si usa web.config para redirigir a una acción de controlador predeterminada. ASP inicia una nueva solicitud HTTP al controlador de errores, que borra las variables del Servidor, perdiendo la información de la excepción. –
mala respuesta ..... aquí hay un buen artículo sobre por qué debería usar tanto http://www.prideparrot.com/blog/archive/2012/5/exception_handling_in_asp_net_mvc –