• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ASP.NETMVC4异常拦截

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
ASP.NETTreeView控件各个节点总是居中对齐,而不是左对齐的问题 ...发布时间:2022-07-10
下一篇:
asp.net获取网站根目录发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap