asp.net core mvc之 过滤器

过滤器允许我们在Action执行之前和执行之后去执行一下业务代码

一、过滤器的作用域

1、全局过滤器,   在Startup.cs文件中注册
2、控制器过滤器, 在控制器类上面使用标注
3、action过滤器

二、全局过滤器使用

1、在 core 目录,添加 TestActionFilter.cs 类并继承IActionFilter 实现

    public class TestActionFilter : IActionFilter
    {
        public void OnActionExecuted(ActionExecutedContext context)
        {
            Debug.WriteLine("Action执行之后执行这里的代码");
        }

        public void OnActionExecuting(ActionExecutingContext context)
        {
            Debug.WriteLine("Action执行之前执行这里的代码");
        }
    }

2、在Startup.cs 添加全局变量过滤器

注意: 

就算是区域的action 也会跳进这个过滤器里面的。所以关于全局过滤器 大家应该要谨慎使用。因为所有的请求 都会执行过滤器里面的代码。所以如果一些非常耗时的操作 不应该加到全局过滤器里面。
全局过滤器 主要处理一些 比如 防盗链 权限认证这些操作

三、控制器和Action级别过滤器

可以在控制器上面 进行标注使用某个过滤器控制器和Action的过滤器,需要实现一个特性类(如:ResultFilterAttribute)然后在里面 也可以实现OnResultExecuting另外 还可以添加自定义的属性。

特性类包含下面一些

ResultFilterAttribute     结果后过滤器
ActionFilterAttribute     执行前后过滤器
ExecutionFilterAttribute  异常过滤器
FormatFilterAttribute     格式化过滤器
ServiceFilterAttribute    服务过滤器
TypeFilterAttribute

1、core目录添加 MyResultFilterAttribute.cs 类

    public class MyResultFilterAttribute : ResultFilterAttribute
    {
        public string Val { get; set; }
        public override void OnResultExecuted(ResultExecutedContext context)
        {

        }
        public override void OnResultExecuting(ResultExecutingContext context){
        
        }
    }

2、控制器,Action调用

 四、重写控制器基类的OnActionExecuted、OnActionExecuting两个方法,达到过滤器的效果

1、Controllers 文件夹添加 BaseController.cs类,继承Controller

    public class BaseController : Controller
    {
        public override void OnActionExecuted(ActionExecutedContext context)
        {
            base.OnActionExecuted(context);
            Debug.WriteLine("Action执行之后执行这里的代码");
        }

        public override void OnActionExecuting(ActionExecutingContext context)
        {
            base.OnActionExecuting(context);
            Debug.WriteLine("Action执行之前执行这里的代码");
        }
    }

2、所有控制继承BaseController控制器

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/149049.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

选择墨西哥专线双清包税前需要了解什么?

选择墨西哥专线双清包税前,需要了解以下几个方面的情况: 1. 墨西哥市场的需求和特点:首先需要了解墨西哥的市场需求和特点,包括消费者对于产品的偏好、消费习惯、购买力等。对于汽配零件行业来说,需要了解墨西哥汽车市…

@postmapping 定义formdata传参方式

背景:feign声明接口,传对象, 但是对象那边没有用requestBody接收; 前端调它也是走的formdata,所以不改变源代码,以及补新接口的情况下,我也需要formdata传参; 不然数据传不过去会为空…

java常用的几个图片处理工具对Tiff文件的支持

ImageMagick 官网 https://imagemagick.org/, 支持多种格式。命令行工具很适合调试。功能很强大. 还有一款工具GraphicsMagick 是从ImageMagick的基础上研发出来的。 OpenCV 官网 https://opencv.org/ , github地址https://github.com/opencv/opencv&…

Python+selenium自动化测试

批量执行完用例后,生成的测试报告是文本形式的,不够直观,为了更好的展示测试报告,最好是生成HTML格式的。 unittest里面是不能生成html格式报告的,需要导入一个第三方的模块:HTMLTestRunner 一、导入HTML…

kubernetes集群编排(12)

目录 istio 部署 部署示例应用 部署遥测组件 流量管理 熔断 istio 官网:https://istio.io/latest/zh/about/service-mesh/ 部署 demo专为测试准备的功能集合 [rootk8s2 ~]# tar zxf istio-1.19.3-linux-amd64.tar.gz [rootk8s2 ~]# cd istio-1.19.3/ [rootk8s2 isti…

总结 MyBatis 的XML实现方法(使用XML使用实现数据的增删改查操作)

MyBatis是一个优秀的持久层框架,它的XML配置文件是实现数据库操作的关键之一。通过XML文件,可以定义SQL语句、映射关系和一些高级功能。下面将探讨下如何使用MyBatis的XML配置文件实现数据的增、删、改、查操作。 1.配置文件 首先要确保 mybatis-confi…

LeetCode:1334. 阈值距离内邻居最少的城市(Floyd C++)

1334. 阈值距离内邻居最少的城市 链接: 1334. 阈值距离内邻居最少的城市 题目描述: 有 n 个城市,按从 0 到 n-1 编号。给你一个边数组 edges,其中 edges[i] [fromi, toi, weighti] 代表 fromi 和 toi 两个城市之间的双向加权边…

OpenAI暂停新的ChatGPT Plus注册 | OpenAI 的 GPT Builder 创建您的 GPTs

OpenAI DevDay 才过去仅仅一周时间,伴随着开发者大会上发布的一系列重磅升级和新特性,无疑这样的进化速度让广大网友炸锅了,其火热程度可见一斑。 就在四个小时前,OpenAI的CEO Sam Altma突然宣布,ChatGPT Plus账号暂停…

Azure的AI使用-(语言检测、凸显分析、图像文本识别)

1.语言检测 安装包: # 语言检测 %pip install azure-ai-textanalytics5.2.0 需要用到密钥和资源的终结点,所以去Azure上创建资源,我这个是创建好的了然后点击密钥和终结者去拿到key和终结点 两个密钥选择哪个都行 语言检测代码示例&#…

sqli-labs(Less-3)

1. 通过构造id1’ 和id1’) 和id1’)–确定存在注入 可知原始url为 id(‘1’) 2.使用order by 语句猜字段数 http://127.0.0.1/sqlilabs/Less-3/?id1) order by 4 -- http://127.0.0.1/sqlilabs/Less-3/?id1) order by 3 --3. 使用联合查询union select http://127.0.0.1…

vue 事件总线 非父子组件之间的简单信息传递

如果两个组件不是父子关系,那么传递信息就不能通过props了。 此时可以使用vue的事件总线来传递信息。 1.创建非父子组件都能访问的事件总线(也就是空的vue实例) 1.创建一个EventBus.js 2.引入vue并且创建一个vue实例 import Vue from vuec…

OSPF常用配置例子

拓朴图如下: 配置步骤: 1.配置IP 2.ospf多区域配置 *Tips:undo info-center enable 关闭信息回显 3.出口设备注入默认路由(完成标志是各路由器学习到默认路由,下发默认路由) R1]default-route-adve…

vim——“Linux”

各位CSDN的uu们好呀,今天,小雅兰的内容是Linux的开发工具——vim。下面,我们一起进入Linux的世界吧!!! Linux编辑器-vim使用 vim的基本概念 vim的基本操作 vim正常模式命令集 vim末行模式命令集 vim操…

远程登录Linux方法(Linux平台相互远程;Windows远程登录Linux、远程编码、文件传输;无法远程登录的问题解决;c程序的编译)

在实际使用Linux系统过程中我们不可避免的需要远程登录Linux,这是因为未来大家使用Linux服务器的时候你所对应的那台Linux服务器不一定提供界面(服务器可能在外地)。本篇将会介绍远程登录Linux的方法。 文章目录 1. SSH介绍2. Linux平台相互远程及文件传输2.1 Linux…

Kubernetes(k8s)资源管理

文章目录 Kubernetes资源管理1.资源管理介绍2.YAML语言介绍3.资源管理方式命令式对象管理命令式对象配置声明式对象配置 扩展:配置kubectl命令可以在node节点上运行 Kubernetes资源管理 1.资源管理介绍 在kubernetes中,所有的内容都抽象为资源&#xf…

优维产品最佳实践第14期:让重要告警能有序跟进,最终根治

监控系统的首要任务是利用特定指标来反映系统内部的健康状态,当指标异常时,会触发告警。对于简单告警的处理,基于告警轨迹可清晰记录和观察告警的状态变化过程。 然而,对于一个复杂告警的处理,可能需要多角色多部门协…

c++基于CImage实现图片格式转换完整源代码

最近遇到项目需要,对图片进行格式转换,抱着怎么简单怎么做的想法,于是进行了验证,代码参考自网络,进行了简单的修改。 我这里提供完整的代码。 直接上代码: 头文件: #pragma once#include &l…

RSS订阅快速连接Notion

数环通让您可以通过不到几分钟的时间即可实现RSS订阅与Notion的对接与集成,从而高效实现工作流程自动化,降本增效! 1.产品介绍 RSS订阅是数环通的内置应用,很多用户通过RSS订阅来收集自己在各大平台上看的内容,当RSS…

关于2023年汉字小达人市级比赛的填空题,及孩子如何提高打字速度

2023年汉字小达人市级比赛安排确定了以后,有一些父母来咨询我市级比赛的题型和往年的真题情况,当了解到市级比赛真的有填空题以后,他们又开始焦虑了,因为孩子平时在家里从了必要的英语打卡等学习以外,刻意不让孩子过多…

【华为内部资料】《高速数字电路设计教材》(可下载)

与数字技术或软件相比,模拟技术人才的培养和造就仍然需要一定的实践和时间,但无论数字技术发展到任何阶段将永远离不开模拟技术。 由于难度系数较大的原因,有时即便投入很多精力,如果缺乏耐心、毅力和必要的条件,投入…