架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 19165|回复: 1

[ASP.NET] ASP.NET Core(九) 之 Middleware 中间件详解

[复制链接]
发表于 2021-5-12 11:21:52 | 显示全部楼层 |阅读模式
中间件是一种装配到应用管道以处理请求和响应的软件。 每个组件:
  • 选择是否将请求传递到管道中的下一个组件。
  • 可在管道中的下一个组件前后执行工作。
请求委托用于生成请求管道。 请求委托处理每个 HTTP 请求。

文档:https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/middleware

回顾:
ASP.NET Core 中间件(Middleware)详解
https://www.itsvse.com/thread-8126-1-1.html

ASP.NET Core(八) 之 Swagger UI 默认参数的坑
https://www.itsvse.com/thread-9640-1-1.html

ASP.NET Core(七)深入刨析框架源码
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET Core(六)DI 手动获取注入对象的方法
https://www.itsvse.com/thread-9595-1-1.html

ASP.NET Core(五)基于 CAP 分布式事务
https://www.itsvse.com/thread-9593-1-1.html

ASP.NET Core(四)之过滤器统一 ModelState 模型验证
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Core(三)使用 ActivatorUtilities 动态创建实例
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Core(二)通过代码自重启应用
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core(一)使用 Redis 缓存
https://www.itsvse.com/thread-9393-1-1.html
ASP.NET Core Middleware 中间件都是以单例模型进行注册,也就是应用程序启动到结束只会实例化一次,只初始化一次构造函数。

首先,我们新建一个 TestMiddleware 中间件,代码如下:


在 startup 文件的 Configure 方法注册,如下:

Middleware 中间件拦截直接响应请求

尝试拦截 /home/index2 路径的请求,直接响应一段 json 信息,代码如下:

QQ截图20210512110139.jpg

Middleware 中间件传入参数值

有的时候,我们需要将一些参数配置传递给中间件,例如:拦截的地址、响应的信息等等。

UseMiddleware()方法的params object[]参数来传递到中间件的构造函数中的,也就是说我们可以通过params object[]来传递任意多个参数到中间件中,只要类型和中间件的构造函数参数匹配即可。

可以通过如下代码传递:


QQ截图20210512110434.jpg

Middleware 中间件之间传值

新建一个 Test2Middleware 中间件,我们同时注册多个中间件,后面的中间件要根据前面的中间件做出一些逻辑处理,也就是中间件之间传递参数,代码如下:


QQ截图20210512111437.jpg

Middleware OnStarting 响应委托

因为中间件可以注册多个,并且可能经过多个中间处理过程,最后一个中间件想在响应之前做一些操作,可以注册一个 OnStarting 委托。测试将在的上下文中执行标头更改HttpResponse.OnStarting(Func<Task>),以确保在将响应刷新到客户端之前立即执行回调。


代码如下:

QQ截图20210512112051.jpg

(完)




上一篇:EF 附加类型”XXXX“的实体失败,因为相同类型的其他...
下一篇:POI使用HSSF,XSSF,SXSSF三种方式
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2021-9-22 19:59:27 | 显示全部楼层
学习学习。。。
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-4-17 07:38

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表