zoukankan      html  css  js  c++  java
  • ASP.NET Core 过滤器

    继承Attribute,IActionFilter实现自己的过滤器类,并且在Startup,mvc服务中注入. 全局都会过滤,在任意一个controller,action执行前和执行后都会过滤一次

    通过Attribute特性标识到想要过滤的地方实现局部过滤(controller,action)

    IActionFilter继承需要实现两个方法OnActionExecuted,OnActionExecuting,分别是动作执行后和动作执行前

     注意点:当你实现自定义过滤器注入后,又实现了该类别过滤器的特性.那么执行顺序是全局过滤器OnActionExecuting,再是特性OnActionExecuting,再是特性OnActionExecuted,最后是过滤器OnActionExecuted.

            public void ConfigureServices(IServiceCollection services)
            {
                services.AddMvc();
                //services.AddMvc(options => options.Filters.Add(new MyActionFilters()));
            }
        /// <summary>
        /// 继承Attribute,IActionFilter实现自己的过滤器类,并且在Startup,mvc服务中注入. 全局都会过滤,在任意一个action执行前和执行后都会过滤一次
        /// 通过Attribute特性标识到想要过滤的地方实现局部过滤(controller,action)
        /// IActionFilter继承需要实现两个方法OnActionExecuted,OnActionExecuting,分别是动作执行前和动作执行后
        /// </summary>
        public class MyActionFilters : Attribute, IActionFilter
        {
            /// <summary>
            /// 动作前执行
            /// </summary>
            /// <param name="context"></param>
            public void OnActionExecuted(ActionExecutedContext context)
            {
                Console.WriteLine("**********************方法运行后执行****************************");
            }
    
            /// <summary>
            /// 动作后执行
            /// </summary>
            /// <param name="context"></param>
            public void OnActionExecuting(ActionExecutingContext context)
            {
                Console.WriteLine("**********************方法运行前执行****************************");
            }
        }

    只要返回ContentResult就会短路,后面的所有逻辑不会再处理

    public class MyActionFilterAttribute : Attribute, IActionFilter
        {
            public void OnActionExecuted(ActionExecutedContext context)
            {
                context.Result = new ContentResult()
                {
                    Content = "Resource unavailable - header should not be set"
                };
            }
    
            public void OnActionExecuting(ActionExecutingContext context)
            {
                var s = "Attribute_OnActionExecuting";
            }
        }
  • 相关阅读:
    docker学习数据卷挂载方式
    接口自动化CIJenkins
    linux安装docker
    docker学习容器备份
    Python实现简易的ORM模型
    Python队列
    selenium实现绕过登录
    docker学习镜像常用操作命令
    docker学习容器常用命令
    把握趋势,成为赢家
  • 原文地址:https://www.cnblogs.com/MingQiu/p/8425609.html
Copyright © 2011-2022 走看看