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 ...
随机推荐
- python常用模块(3)
hashlib模块 hashlib提供了常见的摘要算法,如md5和sha1等等. 那么什么是摘要算法呢?摘要算法又称为哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通 ...
- P3806 【模板】点分治1(题解)(点分治)
P3806 [模板]点分治1(题解)(点分治) 洛谷题目传送门 #include<iostream> #include<cstdlib> #include<cstdio& ...
- LayaBox 常用技巧
1.修改IDE的菜单 找到安装路径的LayaAirIDE\resources\app\out\vs\layaEditor\renders\laya.editorUI.xml 注意事项: 1.mask的 ...
- JQuery的链式编程与隐式迭代
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- IIS故障 应用程序池“XXX”提供服务的进程在与 Windows Process Activation Service 通信时出现严重错误。该进程 ID 为“XXXX”。数据字段包含错误号。
(尝试失败,但觉得有可行性) 参考https://www.cnblogs.com/qidian10/p/6028784.html https://yq.aliyun.com/articles/6434 ...
- vue 中使用 watch 出现了如下的报错
vue 中使用 watch 出现了如下的报错 报错: Method "watch" has type "object" in the component def ...
- AI-Tensorflow-神经网络优化算法-梯度下降算法-学习率
记录内容来自<Tensorflow实战Google一书>及MOOC人工智能实践 http://www.icourse163.org/learn/PKU-1002536002?tid=100 ...
- 2018-8-10-win10-UWP-发邮件
title author date CreateTime categories win10 UWP 发邮件 lindexi 2018-08-10 19:17:19 +0800 2018-2-13 17 ...
- 机器学习-线性回归补充-R^
线性回归算法在选自变量会遇到两个问题:一是去掉多重共线性干扰,二是选择最优自变量组合. 线性回归步骤 1.选择自变量 注意点 去掉多重共线性干扰,选择最优自变量组合.这里需要理解决定系数:R^.它是理 ...
- XC6SLX45T-2FGG484C 原厂订购 原装正品
作为一家科研公司,保证的原厂品质和正规采购渠道是科学严谨的研发工作中重要的一环,更是保证研发产品可靠.稳定的基础.而研发中所遇到的各种不可预测的情况更是每个工程师向技术的山峰攀登中时会遇到的各种难题. ...