zoukankan      html  css  js  c++  java
  • Asp.Net.Core5 筛选器

    一,ActionFilterAttribute

     1 public class CustomActionFilterAttribute: ActionFilterAttribute
     2     {
     3         public override void OnActionExecuting(ActionExecutingContext context)
     4         {
     5             base.OnActionExecuting(context);
     6         }
     7         public override void OnActionExecuted(ActionExecutedContext context)
     8         {
     9             base.OnActionExecuted(context);
    10         }
    11 
    12         public override void OnResultExecuting(ResultExecutingContext context)
    13         {
    14             base.OnResultExecuting(context);
    15         }
    16 
    17         public override void OnResultExecuted(ResultExecutedContext context)
    18         {
    19             base.OnResultExecuted(context);
    20         }
    21     }
    View Code

    二,ExceptionFilterAttribute

     public class CustomExceptionFilterAttribute : ExceptionFilterAttribute
        {
            //出现异常处理
            public override void OnException(ExceptionContext context)
            {
                //返回错误信息
                context.Result = new JsonResult(new
                {
                    errcode = 1,
                    message = context.Exception.Message
                });
            }
        }
    View Code

    三,ResultFilterAttribute

     public class CustomResultFilterAttribute: ResultFilterAttribute
        {
            public CustomResultFilterAttribute() { } //构造函数
            //执行前
            public override void OnResultExecuting(ResultExecutingContext context)
            {
                ////请求方法对象
               // context.HttpContext.Response;
                //context.HttpContext.Request;
                base.OnResultExecuting(context);
            }
            //执行后
            public override void OnResultExecuted(ResultExecutedContext context)
            {
                base.OnResultExecuted(context);
            }
        }
    View Code

    四,作用域

    1,Action  标识Filter

    2,Controller  标识Filter

     [Filters.CustomResultFilter]
     [Filters.CustomExceptionFilter]
     [Filters.CustomActionFilter]
     public IActionResult Index()
     {
         return View();
     }

    3,所有Action ,Controller 

    在Startup.cs 添加    options.Filters.Add(typeof(Filters.CustomeActionFilter));

     public void ConfigureServices(IServiceCollection services)
            {
                services.AddRazorPages().AddRazorRuntimeCompilation();
                services.AddSession();//注册Session
                services.AddControllersWithViews(options =>
                {
                    //添加筛选
                    options.Filters.Add(typeof(Filters.CustomeActionFilter));
                });
            }

    五,筛选器执行-顺序设置

    默认属性可以直接设置为具体int指

     [Filters.CustomExceptionFilter(Order =int.MinValue)]
    public IActionResult Index()
    {
         return View();
    }
    //全局 
    options.Filters.Add(typeof(Filters.CustomeActionFilter),int.MaxValue);

    六,ServiceFilterAttribute

    Action中(CustomeActionFilter) 将从依赖注入容器DI中获取得到


    public void ConfigureServices(IServiceCollection services) {
    services.AddScoped<Filters.CustomeActionFilter>();

    }

    [ServiceFilter(typeof(Filters.CustomeActionFilter),Order =int.MaxValue)]
    public IActionResult Index() { return View(); }

    七,TypeFilterAttribute

    不需注册依赖注入,自带DI容器实现的依赖。

    Microsoft.Extensions.DependencyInjection.ObjectFactory  对类型实例化

    [TypeFilter(typeof(Filters.CustomeActionFilter),Order =int.MaxValue)]
    public IActionResult Index()
    {
       return View();
    }
  • 相关阅读:
    并行计算的技术路径
    Qt 中文编码问题记录
    rest_rpc 编译安装和测试 ubuntu18.04
    Qt QPorcess 启动外部程序失败的原因之一
    ubuntu 下 cesium的环境搭建
    Qt 渐变色笔记
    Qt编写的自定义控件为什么在QtDesigner中可见,在QtCreator中不可见
    Qt 编译及自动部署 库 工具集(自动复制生成的库及头文件到指定的安装路径)
    Windows10 OSG 编译安装及集成至Qt
    百度图像识别SDK简单使用
  • 原文地址:https://www.cnblogs.com/Linc2010/p/14335390.html
Copyright © 2011-2022 走看看