【发布时间】:2014-09-08 09:52:55
【问题描述】:
我一直在阅读有关在 ASP.MVC 中执行错误处理的不同方法。我知道控制器中的try/catch,以及控制器级别的[HandleError]。
但是,我正在尝试对应用程序中任何地方可能发生的未处理异常执行全局错误处理(哇 - 我们从未期望用户这样做!事物的类型)。这样做的结果是向开发人员发送了一封电子邮件:
这工作正常:
protected void Application_Error()
{
Exception last_ex = Server.GetLastError();
Server.ClearError();
// send email here...
Response.Redirect("/Login/Login");
}
在应用程序的其他地方,如果控制器发生错误,我们有这样的逻辑,它会在错误视图中提供友好的错误:
错误模型
namespace My.Models
{
public class ErrorViewModel
{
public string Summary { get; set; }
public string Description { get; set; }
}
}
控制器代码
if(somethingBad){
return View("Error", new ErrorViewModel { Summary = "Summary here", Description = "Detail here" });
}
我的问题是,是否可以从 Global.asax 中重定向到通过 ErrorViewModel 的错误视图,例如
// send email here...
Response.MethodToGetToView(new ErrorViewModel { Summary = "Error", Description = ex.Message });
【问题讨论】: