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塊內的異常。 –