ASP.net mvc 里的AOP

2019-08-27  本文已影响0人  丶End

nhibernate和ef
不同映射框架

大一点的项目总会有相关的AOP面向切面的组件,而MVC(特指:Asp.Net MVC,以下皆同)项目中Action在执行前或者执行后我们想做一些特殊的操作(比如身份验证,日志,异常,行为截取等),而不想让MVC开发人员去关心和写这部分重复的代码。那么,我们可以通过AOP截取实现,而在MVC项目中我们就可以直接使用它提供的Filter的特性帮我们解决,不用自己实现复杂的AOP了。
https://www.cnblogs.com/niouxiaopei/articles/4372571.html

https://www.cnblogs.com/pophis/p/4349622.html

image.png
namespace Filters
{
    public class LogAop : ActionFilterAttribute
    {
        public LogAop(string queryCondition)
        {
            this._queryCondition = queryCondition;
        }

        string _queryCondition;

        /// <summary>
        /// 执行后
        /// </summary>
        /// <param name="filterContext"></param>
        public override void OnActionExecuted(ActionExecutedContext filterContext)
        {            
            var LoginId = filterContext.HttpContext.Request.Cookies["LoginInfo"]["LoginId"];
            _queryCondition += HttpUtility.UrlDecode(filterContext.HttpContext.Request.QueryString.ToString());
            log.Info(DateTime.Now.ToString() + " " + LoginId + " " + _queryCondition);//写入一条新log
        }

        /// <summary>
        /// 执行前
        /// </summary>
        /// <param name="filterContext"></param>
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
        }
    }
}
上一篇 下一篇

猜你喜欢

热点阅读