Asp.Net 6的中间件配置

2021/11/19 1:10:06

本文主要是介绍Asp.Net 6的中间件配置,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

中间件配置

不多墨迹,直接开整

观察Program.cs 发现项目的运行逻辑与Core3.1 与 5.0差异较大。

以前的IHostBuilder 已经不见了

取而代之的是一个新的类型 WebApplicationBuilder

F12 查看类的定义

 实锤了,这个类没见过

但是在类的属性中,发现了旧时.Net Core的 许多 “ 老朋友“

回到Program  观察代码,

注意到了服务与中间件的配置

服务注册使用的就是刚才预览ApplicationBuilder看到的属性IServicesCollection

但是观察请求管道的配置 app的类型为 WebApplicationBuilder

突然脑子转过来,刚刚预览WebApplicationBuilder时,它实现的接口列表

不正有旧时的IApplicationBuilder吗

这下全对上了

配置中间件,调用Build() 后的 use方法即可了

事实证明,是我想多了

这签名不对劲

原版use函数 应该是存在于Application 类型的内部的

 

观察IApplication  与原版无区别

这就奇了个怪了,为什么会无法调用类型内部的use方法?

查看WebApplication签名,看到了这种接口实现方式,

懂了

那看来要不就多一步,将WebApplication转换为IApplication进行中间件配置

或者 研究之前注意到的2个use 扩展方法了

学习别人代码的最高境界,当然是...翻源代码了

反正开源,不看白不看

发现扩展方法扩展的IApplication对象 所以走到了这里,

会自动将WebApplication转换为IApplication,就能间接的调用use方法了。

但是这两个use的代码,让人陷入沉思...

太绕了,让我们这些菜鸡怎么活

开始观察第一个use

它正是间接使用的,旧时的中间件配置方式。

缕清思路,经过换算

simpleNext 委托,其逻辑就是调用下一个中间件。

然后程序执行了传入的Func<HttpContext,Func<Task>,Task> 委托

上下文HttpContext与 调用下一个中间件的逻辑传入到了 该委托 middleware中

第一个能缕清,那第二个自然不在话下了

将上下文参数,与下一个中间件放入到了参数 middleware中

开始撸码!

现在配置中间件有了三种方式(本质上来说,都是最后一种)

先来个套娃压压惊

完成



这篇关于Asp.Net 6的中间件配置的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程