ASP.NET MVC:是否有一个过滤器来了解控制器何时进入catch块? OnException无法正常工作,因为它只是4个未处理的ex。
答案 0 :(得分:0)
您可以编写自己的属性,该属性派生自 ActionFilterAttribute
public class LogExceptionAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
base.OnActionExecuting(filterContext);
}
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
//here you can inspect filterContext for exceptions
base.OnActionExecuted(filterContext);
}
public override void OnResultExecuting(ResultExecutingContext filterContext)
{
base.OnResultExecuting(filterContext);
}
public override void OnResultExecuted(ResultExecutedContext filterContext)
{
base.OnResultExecuted(filterContext);
}
}
然后将该属性放在动作/控制器上,或将其注册在 Global.asax ,ApplicationStart()
作为全局过滤器。
示例:强>
[LogException]
public ActionResult Index()
{
throw new Exception();
return View();
}
这将使您能够记录异常或执行其他操作。