2012-11-09 63 views

回答

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(); 
     } 

enter image description here

这将使您可以登录异常或做其他事。

+0

它只适用于未处理的异常(我应该重新抛出异常以使其工作)。 – raulgomis