在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
ASP.NET MVC4 程序发生异常时,通过拦截Action的异常,重写ActionFilterAttribute 的方法OnActionExecuted实现。 具体实现代码如下: /// <summary> /// 拦截Action的异常 /// </summary> [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false)] public class ExceFilterAttribute : ActionFilterAttribute { public override void OnActionExecuted(ActionExecutedContext filterContext) { if (filterContext.Exception != null) { object[] attrs = filterContext.ActionDescriptor.GetCustomAttributes(typeof(LigerUIExceptionResultAttribute), true); if (attrs.Length == 1)//判断是否属于LigerUIResult的Action { string msgTmp= "<b>异常消息: </b>{0}</p><b>触发Action: </b>{1}</p><b>异常类型: </b>{2}"; var excResult = new JsonResult(); excResult.Data = AjaxResult.Error(string.Format(msgTmp, filterContext.Exception.GetBaseException().Message, filterContext.ActionDescriptor.ActionName, filterContext.Exception.GetBaseException().GetType().ToString())); LogHelper.WriteLog("系统错误:" + excResult.Data); filterContext.Result = excResult; } else { filterContext.Controller.ViewData["ErrorMessage"] = String.Format(@"<b>异常消息: {0}</br><b>触发Action: </p>{1}</br><b>异常类型: </b>{2}", filterContext.Exception.GetBaseException().Message, filterContext.ActionDescriptor.ActionName, filterContext.Exception.GetBaseException().GetType().ToString()); LogHelper.WriteLog("系统错误:" + filterContext.Controller.ViewData["ErrorMessage"].ToString ()); filterContext.Result = new ViewResult() { ViewName = "Error", ViewData = filterContext.Controller.ViewData, }; } filterContext.ExceptionHandled = true; } } }
|
请发表评论