Asp.net MVC通过自定义特性实现Action日志记录

一、自定义特性

/// <summary>
    /// 描述特性
    /// </summary>
    [AttributeUsage(AttributeTargets.Method)]
    public sealed class DescribeAttribute : Attribute
    {
        private string _funDescribe;

        public DescribeAttribute() { }

        public DescribeAttribute(string funDescribe)
        {
            this._funDescribe = funDescribe;
        }

        public string FunDescribe
        {
            get { return _funDescribe; }
        }
    }

二、在Action上面加入特性

[Describe("系统主页面")]
        public ActionResult Index()
        {
            return View();
        }

三、继承ActionFilterAttribute实现LogFilter日志

public sealed class LogFilter : ActionFilterAttribute
    {
        public override void OnActionExecuted(ActionExecutedContext filterContext)
        {
            if (filterContext == null)
            {
                throw new ArgumentNullException(nameof(filterContext));
            }

            object[] attrs = filterContext.ActionDescriptor.GetCustomAttributes(typeof(DescribeAttribute), false);
            if (attrs.Length > 0)
            {
                string funDescribe = ((DescribeAttribute)attrs[0]).FunDescribe;
            }
            base.OnActionExecuted(filterContext);
        }
    }

四、在App_Start文件夹下面加入全局日志过滤器

public class FilterConfig
    {
        public static void RegisterGlobalFilters(GlobalFilterCollection filters)
        {
            filters.Add(new AuthorizeAttribute());
            filters.Add(new HandleErrorAttribute());
            filters.Add(new LogFilter());
        }
    }
时间: 2024-12-26 15:13:02

Asp.net MVC通过自定义特性实现Action日志记录的相关文章

ASP.NET MVC学习之Log4Net配置(日志记录)

Log4Net配置笔记---- 首先,添加对log4net.dll的引用. 在Web.config文件下的Configuration节点下添加Log4Net的配置信息: 1 <!--Log4Net配置节点--> 2 <configSections> 3 <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>

ASP.NET MVC基于标注特性的Model验证:将ValidationAttribute应用到参数上

原文:ASP.NET MVC基于标注特性的Model验证:将ValidationAttribute应用到参数上 ASP.NET MVC默认采用基于标准特性的Model验证机制,但是只有应用在Model类型及其属性上的ValidationAttribute才有效.如果我们能够将ValidationAttribute特性直接应用到参数上,我们不但可以实现简单类型(比如int.double等)数据的Model验证,还能够实现“一个Model类型,多种验证规则”,本篇文章将为你提供相关的解决方案(源代码

ASP.NET MVC基于标注特性的Model验证:一个Model,多种验证规则

原文:ASP.NET MVC基于标注特性的Model验证:一个Model,多种验证规则 对于Model验证,理想的设计应该是场景驱动的,而不是Model(类型)驱动的,也就是对于同一个Model对象,在不同的使用场景中可能具有不同的验证规则.举个简单的例子,对于一个表示应聘者的数据对象来说,针对应聘的岗位不同,肯定对应聘者的年龄.性别.专业技能等方面有不同的要求.但是ASP.NET MVC的Model验证确是Model驱动的,因为验证规则以验证特性的形式应用到Model类型及其属性上.这样的验证

[转][译]ASP.NET MVC 4 移动特性

此教程将讨论ASP.NET MVC 4 Web应用程序里的移动特性.对于此教程,可以使用 Visual Studio Express 2012 或者 Visual Web Developer 2010 Express Service Pack 1 ("Visual Web Developer 或者 VWD").  如果你已经有了专业版本的 Visual Studio 你也可以使用. 开始之前,确保你已经安装了以下列出的必需项. Visual Studio Express 2012 (推

(转) 一步一步学习ASP.NET 5 (四)- ASP.NET MVC 6四大特性

转发:微软MVP 卢建晖 的文章,希望对大家有帮助.原文:http://blog.csdn.net/kinfey/article/details/44459625 编者语 : 昨晚写好的文章居然csdn不审核,这个也难怪人,但自己比较忙没办法.分享继续,今天谈ASP.NET MVC 6. 我蛮喜欢Ruby On Rails 这种约定胜于配置的框架,在.NET 有ASP.NET MVC 和Java有Play! Framework .  ASP.NET MVC 版本基本上每年一更新,从不让你失望.我

asp.net mvc输出自定义404等错误页面,非302跳转。

朋友问到一个问题,如何输出自定义错误页面,不使用302跳转.当前页面地址不能改变. 还要执行一些代码等,生成一些错误信息,方便用户提交反馈. 500错误,mvc框架已经有现成解决方法: filters.Add(new HandleErrorAttribute()); 404错误目前想到的解决方法: 先上代码 Global.asax: 1 protected void Application_Error(object sender, EventArgs e) 2 { 3 var ex = Serv

【转】Asp.net MVC 通过自定义ControllerFactory实现构造器注入(重写DefaultControllerFactory)

[转]Asp.net MVC 通过自定义ControllerFactory实现构造器注入 一.重写ControllerFactory的GetControllerInstance ControllerFactory是asp.net中用于在运行时构造Controller的工厂 ,默认使用的工厂在构造Controller时,默认调用Controller的无参构造函数,所以要实现构造器注入,需要重写工厂中构造Controller的方法GetControllerInstance: 1 public cla

ASP.NET MVC 5使用Filter过滤Action参数防止sql注入,让你代码安全简洁

在开发程序的过程中,稍微不注意就会隐含有sql注入的危险.今天我就来说下,ASP.NET mvc 5使用Filter过滤Action参数防止sql注入,让你代码安全简洁.不用每下地方对参数的值都进行检查,看是用户输入的内容是否有危险的sql.如果每个地方都要加有几个缺点: 1.工作量大 2.容易遗漏 3.不容易维护 下面我通过写一个过滤防止sql的特性类,对Action执行前对Action的参数进行处理,如果有其值有sql语句,就会这些非法字符替换为空字符串. 一.sql注入的例子: 上面的输入

ASP.NET MVC 5使用Filter过滤Action参数防止sql注入

在开发程序的过程中,稍微不注意就会隐含有sql注入的危险.今天我就来说下,ASP.NET mvc 5使用Filter过滤Action参数防止sql注入,让你代码安全简洁.不用每下地方对参数的值都进行检查,看是用户输入的内容是否有危险的sql.如果每个地方都要加有几个缺点: 1.工作量大 2.容易遗漏 3.不容易维护 下面我通过写一个过滤防止sql的特性类,对Action执行前对Action的参数进行处理,如果有其值有sql语句,就会这些非法字符替换为空字符串. 一.sql注入的例子: 上面的输入