Redirecionar para exibição de erro compartilhada do Global.asax na exceção não tratada do MVC
Eu tenho lido sobre as diferentes maneiras de executar o tratamento de erros no ASP.MVC. Eu sei sobretry/catch
dentro de um controlador e também sobre[HandleError]
no nível do controlador.
No entanto, estou tentando executar o tratamento global de erros para exceções não tratadas que possam ocorrerqualquer lugar no aplicativo (ouau - nunca esperávamos que um usuário fizesse isso! tipo de coisa). O resultado disso é que um email é enviado para o desenvolvedor:
Isso está funcionando bem:
protected void Application_Error()
{
Exception last_ex = Server.GetLastError();
Server.ClearError();
// send email here...
Response.Redirect("/Login/Login");
}
Em outras partes do aplicativo, se ocorrer um erro em um controlador, temos essa lógica que fornece um erro amigável em nossa visão de erro:
Modelo de erro
namespace My.Models
{
public class ErrorViewModel
{
public string Summary { get; set; }
public string Description { get; set; }
}
}
Código do Controlador
if(somethingBad){
return View("Error", new ErrorViewModel { Summary = "Summary here", Description = "Detail here" });
}
Minha pergunta é: é possível redirecionar para a visualização de erro passando oErrorViewModel
no Global.asax, por exemplo,
// send email here...
Response.MethodToGetToView(new ErrorViewModel { Summary = "Error", Description = ex.Message });