码迷,mamicode.com
首页 > Web开发 > 详细

asp.net mvc 使用过滤器捕获异常 写入日志

时间:2020-02-12 20:30:58      阅读:90      评论:0      收藏:0      [点我收藏+]

标签:com   ror   pre   继承   exception   ati   start   string   mvc   

创建一个异常处理类ExceptionFilters,继承System.Web.Mvc.FilterAttribute, System.Web.Mvc.IExceptionFilter 实现方法OnException

 public class ExceptionFilters : System.Web.Mvc.FilterAttribute, System.Web.Mvc.IExceptionFilter
    {
        public void OnException(ExceptionContext filterContext)
        {
            if (!filterContext.ExceptionHandled)
            {
                string controllerName = (string)filterContext.RouteData.Values["controller"];
                string actionName = (string)filterContext.RouteData.Values["action"];
                string ip = HttpContext.Current.Request.UserHostAddress;
                string param = filterContext.HttpContext.Request.HttpMethod;
                //记录日志
                LogFile.WriteErrorLog(DateTime.Now + string.Format(" Location:{0}/{1} Param:{2} UserIP:{3} Exception:{4}", controllerName, actionName, param, ip, filterContext.Exception.Message));
                //设置返回结果
                filterContext.Result = new JsonResult
                {
                    Data = new ResultU { IsOK = false, Code = 999, Msg = filterContext.Exception.Message },
                    JsonRequestBehavior = JsonRequestBehavior.AllowGet
                };
            }

            filterContext.ExceptionHandled = true;//返回结果是JsonResult,则设置异常已处理


        }
    }

在过滤器中注册

在App_Start/FilterConfig.cs

 public class FilterConfig
    {
        public static void RegisterGlobalFilters(GlobalFilterCollection filters)
        {
            //filters.Add(new HandleErrorAttribute());
            filters.Add(new ExceptionFilters());
        }
    }

 

 测试返回   写入日志

 技术图片

 

asp.net mvc 使用过滤器捕获异常 写入日志

标签:com   ror   pre   继承   exception   ati   start   string   mvc   

原文地址:https://www.cnblogs.com/shenghuotaiai/p/12300572.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!