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 字段(如 secureSameSite)的最低标准。 在发出 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
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

原文地址:https://www.cnblogs.com/Jeely/p/10959973.html

时间: 2024-10-06 00:39:54

Asp.Net Core 第06局:中间件的相关文章

在ASP.NET Core 中使用Cookie中间件

http://ASP.NET Core 提供了Cookie中间件来序列化用户主题到一个加密的Cookie中并且在后来的请求中校验这个Cookie,再现用户并且分配到HttpContext对象的User属性中.如果你想提供自己的登录方式和用户数据你可以使用Cookie中间件来实现独立的功能. 添加和配置 第一步是增加Cookie中间件到你的应用中.首先使用nuget增加Microsoft.AspNetCore.Authentication.Cookies 程序包.然后添加下面的几行代码到Start

ASP.NET Core解说之Middleware(中间件)

一.什么是中间件 中间件是汇集到以处理请求和响应的一个应用程序管道的软件. 每个组件: 可以选择是否要将请求传递到管道中的下一个组件. 可以在请求管道的下一个组件调用之前和之后执行相关业务操作. 二.使用 IApplicationBuilder 创建中间件管道 ASP.NET Core请求管道由一系列请求委托组成,这些请求委托按序一个接一个被调用,如图所示的顺序组成(按照黑色箭头的顺序执行): 每个委托可以执行相关操作在下一个委托的之前和之后. 委托还可以决定不将请求传递给委托链的下一个委托(我

asp.net core mvc 中间件之WebpackDevMiddleware

asp.net core mvc 中间件之WebpackDevMiddleware WebpackDevMiddleware中间件主要用于开发SPA应用,启用Webpack,增强网页开发体验.好吧,你想用来干嘛就干嘛,这次主要是通过学习该中间件,学习如何在core中启用Webpack支持 通过上上篇asp.net core mvc 管道之中间件,大致可以了解中间件是什么东西,现在就以中间件为单位,一个一个点学习各种中间件,了解并掌握,最后学会自己写中间件 该中间件源码 说明 WebpackDev

Asp.Net Core 中间件应用实践中你不知道的那些事

一.概述 这篇文章主要分享Endpoint 终结点路由的中间件的应用场景及实践案例,不讲述其工作原理,如果需要了解工作原理的同学, 可以点击查看以下两篇解读文章: Asp.Net Core EndPoint 终结点路由工作原理解读 ASP.NET CORE 管道模型及中间件使用解读 1.1 中间件(Middleware)的作用 我们知道,任何的一个web框架都是把http请求封装成一个管道,每一次的请求都是经过管道的一系列操作,最终到达我们写的代码中.那么中间件就是在应用程序管道中的一个组件,用

12.ASP.NET Core 中间件组件

这篇文章中,我将带领大家一起详细学习:ASP.NET Core Middleware Components.这篇文章中,我将详细讨论下面几个问题: 什么是ASP.NET Core 中的中间件组件? ASP.NET Core应用程序中,在哪里来使用中间件组件? 怎样来配置ASP.NET Core 应用程序中的中间件组件? 使用中间件组件的例子有哪些? ASP.NET Core应用程序中,中间件组件执行的顺序是? 什么是ASP.NET Core中间件组件? ASP.NET Core中间件组件就是组装

ASP.NET Core中的缓存[1]:如何在一个ASP.NET Core应用中使用缓存

.NET Core针对缓存提供了很好的支持 ,我们不仅可以选择将数据缓存在应用进程自身的内存中,还可以采用分布式的形式将缓存数据存储在一个“中心数据库”中.对于分布式缓存,.NET Core提供了针对Redis和SQL Server的原生支持.除了这个独立的缓存系统之外,ASP.NET Core还借助一个中间件实现了“响应缓存”,它会按照HTTP缓存规范对整个响应实施缓存.不过按照惯例,在对缓存进行系统介绍之前,我们还是先通过一些简单的实例演示感知一下如果在一个ASP.NET Core应用中如何

使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(四)-- Middleware

本文记录了Asp.Net管道模型和Asp.Net Core的Middleware模型的对比,并在上一篇的基础上增加Middleware功能支持. 在演示Middleware功能之前,先要了解一下Asp.Net管道模型发生了什么样的变化. 第一部分:管道模型 1. Asp.Net管道 在之前的Asp.Net里,主要的管道模型流程如下图所示: 请求进入Asp.Net工作进程后,由进程创建HttpWorkRequest对象,封装此次请求有关的所有信息,然后进入HttpRuntime类进行进一步处理.H

Asp.Net Core 项目实战之权限管理系统(5) 用户登录

0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之权限管理系统(2) 功能及实体设计 3 Asp.Net Core 项目实战之权限管理系统(3) 通过EntityFramework Core使用PostgreSQL 4 Asp.Net Core 项目实战之权限管理系统(4) 依赖注入.仓储.服务的多项目分层实现 5 Asp.Net Core 项目实

Asp.Net Core WebApi学习笔记(四)-- Middleware

Asp.Net Core WebApi学习笔记(四)-- Middleware 本文记录了Asp.Net管道模型和Asp.Net Core的Middleware模型的对比,并在上一篇的基础上增加Middleware功能支持. 在演示Middleware功能之前,先要了解一下Asp.Net管道模型发生了什么样的变化. 第一部分:管道模型 1. Asp.Net管道 在之前的Asp.Net里,主要的管道模型流程如下图所示: 请求进入Asp.Net工作进程后,由进程创建HttpWorkRequest对象