ASP.NET MVC:是否有过滤器可以知道控制器何时进入 catch 块?OnException 不起作用,因为它只是 4 个未处理的 ex。
问问题
362 次
1 回答
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();
}
这将使您能够记录异常或执行其他操作。
于 2012-11-09T13:38:41.353 回答