您的位置:首页 > 编程语言 > ASP

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

2017-11-08 11:37 716 查看
一、自定义特性

/// <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());
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: