【发布时间】:2016-09-12 17:01:50
【问题描述】:
我想听从很多建议,只使用全局HandleErrorAttribute,但这个属性似乎直接显示Error 视图,让我没有地方记录异常。我不认为视图是记录日志和其他业务逻辑的正确位置。
我还可以选择在我的BaseController 中覆盖OnException,但我担心与HandleErrorAttribute 发生冲突。如果我按如下方式覆盖OnException,不处理异常,它会继续到HandleErrorAttribute吗?
protected override void OnException(ExceptionContext filterContext)
{
Exception exception = filterContext.Exception;
var controller = filterContext.RouteData.Values["controller"].ToString();
var action = filterContext.RouteData.Values["action"].ToString();
logger.Error(exception, "Exception in controller '{0}': action '{1}'.", controller, action);
filterContext.Exception = exception;
//filterContext.ExceptionHandled = true;
}
或者我该如何记录异常?我相信上述两种方法使我免于在每个操作方法上实现“try-catch”,并且捕获特定异常可能会很麻烦。我还希望可以选择重新启动应用程序,或者如果发生真正灾难性的异常,再次HandleErrorAttribute 并没有留下太多空间。
【问题讨论】:
标签: c# asp.net-mvc logging exception-handling asp.net-mvc-5