C# ASP.NET MVC筛选所有异常(包括已处理的异常)
ASP.NET MVC:当控制器进入catch块时,是否有一个过滤器可以知道?OneException不起作用,因为它只有4个未处理的实例。您可以编写自己的属性,该属性派生自ActionFilterAttributeC# ASP.NET MVC筛选所有异常(包括已处理的异常),c#,asp.net-mvc,asp.net-mvc-3,c#-3.0,C#,Asp.net Mvc,Asp.net Mvc 3,C# 3.0,ASP.NET MVC:当控制器进入catch块时,是否有一个过滤器可以知道?OneException不起作用,因为它只有4个未处理的实例。您可以编写自己的属性,该属性派生自ActionFilterAttribute public class LogExceptionAttribute : ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext filter
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);
}
}
然后将属性放在操作/控制器上,或将其注册到全局.asax,ApplicationStart()
中作为全局筛选器
示例:
[LogException]
public ActionResult Index()
{
throw new Exception();
return View();
}
这将使您能够记录异常或执行其他操作。除非您从catch块中重新抛出异常,否则不会。它只适用于未处理的异常(我应该重新抛出异常以使其生效)。