Asp.Net Core 第06局:中间件
总目录
前言
本文介绍Asp.Net Core 中间件。
环境
1.Visual Studio 2017
2.Asp.Net Core 2.2
开局
第一手:中间件概述

1.中间件:添加到应用管道用于处理处理请求和响应的组件。每个组件:
- 可以选择是否将请求传递到管道中的下一个组件;
- 可以在调用管道中的下一个组件之前和之后执行工作;
2.管道:如图中黑色箭头,从请求到相应的过程,称之为管道;
3.上图解释:当Request进来时,首先进入Middleware1,然后调用next方法进入Middleware2,
然后调用next方法进入Middleware3,没有next方法所以再依次返回,完成管道处理;
4.三种方法添加中间件:
- Use:通常使用Use,Use也可使管道短路,即不调用next方法;
- Run:Run一般在管道末端使用Run方法;
- Map:Map一般用于处理特定的请求路径。
下面介绍这三种方法的使用。
第二手:中间件使用
1.Use的使用


1.说一下IApplicationBuilder,Use、Run、和Map添加中间件,其实都是添加到IApplicationBuilder
中的一个组件容器内,在执行时,会遍历这个组件容器,依次执行中间件。
2.Run的使用


3.Map的使用


内置中间件
Asp.Net Core内置了以下中间件(用法:Use{中间件}):
| 中间件 | 描述 | 顺序 |
|---|---|---|
| Authentication | 提供身份验证支持。 | 在需要 HttpContext.User 之前。 OAuth 回叫的终端。 |
| Cookie Policy | 跟踪用户是否同意存储个人信息,并强制实施 cookie 字段(如 secure 和 SameSite)的最低标准。 |
在发出 cookie 的中间件之前。 示例:身份验证、会话、MVC (TempData)。 |
| CORS | 配置跨域资源共享。 | 在使用 CORS 的组件之前。 |
| Diagnostics | 配置诊断。 | 在生成错误的组件之前。 |
| Forwarded Headers | 将代理标头转发到当前请求。 | 在使用已更新字段的组件之前。 示例:方案、主机、客户端 IP、方法。 |
| Health Check | 检查 ASP.NET Core 应用及其依赖项的运行状况,如检查数据库可用性。 | 如果请求与运行状况检查终结点匹配,则为终端。 |
| HTTP Method Override | 允许传入 POST 请求重写方法。 | 在使用已更新方法的组件之前。 |
| HTTPS Redirection | 将所有 HTTP 请求重定向到 HTTPS(ASP.NET Core 2.1 或更高版本)。 | 在使用 URL 的组件之前。 |
| HTTP Strict Transport Security (HSTS) | 添加特殊响应标头的安全增强中间件(ASP.NET Core 2.1 或更高版本)。 | 在发送响应之前,修改请求的组件之后。 示例:转接头、URL 重写。 |
| MVC | 用 MVC/Razor Pages 处理请求(ASP.NET Core 2.0 或更高版本)。 | 如果请求与路由匹配,则为终端。 |
| OWIN | 与基于 OWIN 的应用、服务器和中间件进行互操作。 | 如果 OWIN 中间件处理完请求,则为终端。 |
| Response Caching | 提供对缓存响应的支持。 | 在需要缓存的组件之前。 |
| Response Compression | 提供对压缩响应的支持。 | 在需要压缩的组件之前。 |
| Request Localization | 提供本地化支持。 | 在对本地化敏感的组件之前。 |
| Routing | 定义和约束请求路由。 | 用于匹配路由的终端。 |
| Session | 提供对管理用户会话的支持。 | 在需要会话的组件之前。 |
| Static Files | 为提供静态文件和目录浏览提供支持。 | 如果请求与文件匹配,则为终端。 |
| URL Rewriting | 提供对重写 URL 和重定向请求的支持。 | 在使用 URL 的组件之前。 |
| WebSockets | 启用 WebSockets 协议。 | 在接受 WebSocket 请求所需的组件之前。 |
第三手:中间件自定义
1.创建自定义中间件类,并提供使用它的扩展方法

2.在Configure方法中调用

3.运行

终局
本文介绍Asp.Net Core中间件,下局介绍路由,待续...
总目录
作者:dotNET之家
链接:https://www.jianshu.com/p/ff1a9bd14eb6
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
Asp.Net Core 第06局:中间件的更多相关文章
- 在ASP.NET Core 中使用Cookie中间件
在ASP.NET Core 中使用Cookie中间件 ASP.NET Core 提供了Cookie中间件来序列化用户主题到一个加密的Cookie中并且在后来的请求中校验这个Cookie,再现用户并且分 ...
- asp.net core mvc 管道之中间件
asp.net core mvc 管道之中间件 http请求处理管道通过注册中间件来实现各种功能,松耦合并且很灵活 此文简单介绍asp.net core mvc中间件的注册以及运行过程 通过理解中间件 ...
- 在ASP.NET Core 中使用Cookie中间件 (.net core 1.x适用)
在ASP.NET Core 中使用Cookie中间件 ASP.NET Core 提供了Cookie中间件来序列化用户主题到一个加密的Cookie中并且在后来的请求中校验这个Cookie,再现用户并且分 ...
- Asp.Net Core入门之自定义中间件
什么是中间件? 这里引用官方解释: 中间件是用于组成应用程序管道来处理请求和响应的组件.管道内的每一个组件都可以选择是否将请求交给下一个组件.并在管道中调用下一个组件之前和之后执行某些操作.请求委托被 ...
- asp.net core 3.1 自定义中间件实现jwt token认证
asp.net core 3.1 自定义中间件实现jwt token认证 话不多讲,也不知道咋讲!直接上代码 认证信息承载对象[user] /// <summary> /// 认证用户信息 ...
- Asp.Net Core 第07局:路由
总目录 前言 本文介绍Asp.Net Core 路由. 环境 1.Visual Studio 2017 2.Asp.Net Core 2.2 开局 第一手:路由概述 1.路由主要用于处理特定的请求. ...
- Asp.Net Core 第05局:读取配置
前言 本文介绍Asp.Net Core 读取配置文件. 环境 1.Visual Studio 2017 2.Asp.Net Core 2.2 开局 前期准备 1.添加app.j ...
- Asp.Net Core 第03局:Startup
总目录 前言 本文介绍Startup,它主要用于配置应用使用的服务和应用的请求管道. 环境 1.Visual Studio 2017 2.Asp.Net Core 2.2 开局 第一手:Startup ...
- ASP.NET Core 使用 URL Rewrite 中间件实现 HTTP 重定向到 HTTPS
在传统 ASP.NET 程序中,我们可以通过配置 IIS 的“URL 重写”功能实现将 HTTP 请求重定向为 HTTPS .但是该方法在 ASP.NET Core 应用中不再工作.在 ASP.NET ...
随机推荐
- js 为false的几种情况
1: false 2: null 3:undefined 4:"" 空字符串 5:0 6:NaN 如果你的if条件里面会出现 0 或者"",那么这种肯定是为假的 ...
- LeetCode10 Indexed tree
Binary Indexed Tree(Fenwick tree): 是一个查询和修改复杂度都为log(n)的数据结构.主要用于查询任意两位之间的所有元素之和,但是每次只能修改一个元素的值:经过简单修 ...
- jvm(1)性能监控-linux相关命令
top命令能够实时显示系统中各个进程的资源占用情况,其输出信息分为两部分,前半部分为系统统计信息,后半部分是进程信息. 第一行是任务队列信息,它的结果等同于uptime命令. 第二行是进程统计信息: ...
- java的spi(Service Provider Interface)机制及源码(java8)
1.什么是java的spi spi 全称为 service provider interface 即 服务提供接口,用来作为服务的扩展发现.在运行时动态添加接口的实现,是对接口的实现类的创建管理. 2 ...
- Blocks题解(区间dp)
Blocks题解 区间dp 阅读体验...https://zybuluo.com/Junlier/note/1289712 很好的一道区间dp的题目(别问我怎么想到的) dp状态 其实这个题最难的地方 ...
- [fw]Linux系统使用time计算命令执行的时间
Linux系统使用time计算命令执行的时间 当测试一个程序或比较不同算法时,执行时间是非常重要的,一个好的算法应该是用时最短的.所有类UNIX系统都包含time命令,使用这个命令可以统计时间消耗.例 ...
- 修改xampp中的MySQL密码
1.开启MySQL服务后,点击XAMPP Control Panel上的Admin按钮 2.依次点击"账户"--最后一个"修改权限"--修改密码 3.输入两次相 ...
- elasticsearch 深入 —— normalizer
keyword字段的normalizer属性类似于分析器,只是它保证分析链生成单个token. 在索引关键字之前,以及在通过诸如match查询之类的查询解析器或者通过诸如term查询之类的术语级查询搜 ...
- windows server 2008R2 配置tomcat服务开机自启动
一.配置环境 操作系统:Windows server 2008 R2 软件包:jdk_1.7.rar 二.安装操作 1,右击解压jdk_1.7.rar:解压后双击运行jdk-7u79-windows- ...
- robotframework的if else