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";
            }
        }
  • 相关阅读:
    Unique Binary Search Trees(dp)
    Binary Tree Inorder Traversal
    Reverse Linked List II
    O​r​a​c​l​e​1​1​g​自​带​的​S​Q​L​ ​d​e​v​e​l​o​p​e​r​无​法​打​开​解​决​
    英语飙升的好方法
    MyEclipse加入jquery.js文件missing semicolon的错误
    js,jq获取手机屏幕分辨率的宽高
    给标签元素设固定宽高,内部添加滚动条显示
    解决手机端点击input的时候,页面会放大
    支付宝异步回调验证签名
  • 原文地址:https://www.cnblogs.com/MingQiu/p/8425609.html
Copyright © 2011-2022 走看看