1
ASP.NET MVC:有没有一个过滤器知道控制器何时进入catch块? OnException不起作用的基础是它只是4个未处理的事实。所有异常的ASP.NET MVC过滤器(包含已处理)
ASP.NET MVC:有没有一个过滤器知道控制器何时进入catch块? OnException不起作用的基础是它只是4个未处理的事实。所有异常的ASP.NET MVC过滤器(包含已处理)
您可以编写自己的属性从衍生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();
}
这将使您可以登录异常或做其他事。
它只适用于未处理的异常(我应该重新抛出异常以使其工作)。 – raulgomis
除非你重新抛出catch块内的异常。 –