net core 3.1 自定义中间件

net core 3.1 中间件的使用

中间件是啥?

中间件是典型的AOP实现,你可以把请求处理模型想象成一个管道,一个请求过来,要在管道中过关斩将,通过执行,才会请求成功,而阻挡着请求进来的的软件或者说是逻辑,就是中间件来实现的。(不理解就没法子了)

下面来直接实现自定义中间件

 public class CustomMiddle
    {

        private readonly RequestDelegate _next;

        /// <summary>
        /// 管道执行到该中间件时候下一个中间件的RequestDelegate请求委托,如果有其它参数,也同样通过注入的方式获得
        /// </summary>
        /// <param name="next"></param>
        public CustomMiddle(RequestDelegate next)
        {
            
            _next = next;
        }

        /// <summary>
        /// 自定义中间件要执行的逻辑
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public async Task Invoke(HttpContext context)
        {
            Console.WriteLine("CustomMiddle");
            await _next(context);//把context传进去执行下一个中间件
            Console.WriteLine("CustomMiddle");
        }
    }

三大块:

  1. 声明:RequestDelegate
  2. 注入 RequestDelegate(需要其他参数自行注入)
  3. Invoke 方法

必须要理解 参数是委托返回值是委托的方法调用,然后把这个方法再传递给下一个返回值是委托,参数是委托的方法,之前写过类似俄罗斯套娃的实现,就是典型的中间件实现原理。

最后在startup中的configure

 app.UseMiddleware<CustomMiddle>();
app.UseMiddleware<CustomMiddle1>();
app.UseMiddleware<CustomMiddle2>();

其他两个CustomMiddle1,CustomMiddle2,跟CustomMiddle,一模一样

执行顺序就是

CustomMiddle
CustomMiddle1
CustomMiddle2
CustomMiddle2
CustomMiddle1
CustomMiddle

或者还可以写成IApplicationBuilder的扩展方法和其他调用中间件保持一致写法

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小盆友你是否很有多问号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值