

ASP.NET Core 中间件分类
source link: http://mp.weixin.qq.com/s?__biz=MzAwNTMxMzg1MA%3D%3D&%3Bmid=2654077848&%3Bidx=4&%3Bsn=c71721e2bf3749784ee2fdc5d7dc495e
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

ASP.NET Core 中间件的配置方法可以分为以上三种,对应的Helper方法分别是:Run(), Use(), Map()。
-
Run(),使用Run调用中间件的时候,会直接返回一个响应,所以后续的中间件将不会被执行了。
-
Use() ,它会对请求做一些工作或处理,例如添加一些请求的上下文数据,有时候甚至什么也不做,直接把请求交给下一个中间件。
-
Map(),它会把请求重新路由到其它的中间件路径上去。
实际中呢,Use()这个helper方法用的最多。
Run():
这是一个使用Run方法调用的中间件,Run方法会终止整个中间件管道,它应该返回某种类型的响应。
Use():
Use看起来和Run差不多,但是多了一个next参数。next可以用来调用请求管道中的下一个中间件。而当前的中间件也可以自己返回响应,这就忽略掉了next调用。
在next调用之前,我们可以写一些请求进来的逻辑,而在next调用之后,就相当于返回响应了,这时候也可以写一些逻辑。
在本例中,我们下面还使用了Run方法注册了另一个中间件。因为中间件会按照它们注册的顺序进行调用,所以在第一个Use方法里执行next.Invoke()的时候,就会执行下面Run所调用的中间件。
Map():
Map方法可以把请求路由到其它的中间件上面。
在这里,如果请求的路径以/jump结尾,那么它所对应的handler方法,也就是HereIAm方法的中间件就会被调用,并返回一个响应。
而如果请求的路径不是以/jump结尾,那么HereIAm方法里面的中间件就不会被调用。
中间件Class
上面的例子,我都是使用的inline写法的中间件。
而实际上,中间件通常是自成一个类。中间件的类需要类似这样:
自定义的中间件类需要由这几部分组成:
-
接受一个RequestDelegate类型的参数next的构造函数。
-
按约定,还需要定义一个叫做Invoke的方法。该方法里会包含主要的业务逻辑,并且它会被请求管道所执行。Invoke方法可以忽略里面的_next调用,并返回一个响应;也可以调用_next.Invoke()把请求发送到管道的下一站。
Recommend
-
19
ASP.NET Core应用默认的请求处理管道是由注册的IServer对象和HostingApplication对象组成的,后者利用一个在创建时提供的RequestDelegate对象来处理IServer对象分发给它的请求。而RequestDelegate对象实际上是由所有的中间件按照注册顺序创建的。换句话说,这个...
-
22
写在前面 上一篇大家已经粗略接触了解到.NET Core中间件的使用:ASP .Net Core 中间件的使用(一):搭建静态文件服务器/访问指定文件,
-
38
借助路由系统提供的请求URL模式与对应终结点(Endpoint)之间的映射关系,我们可以将具有相同URL模式的请求分发给应用的终结点进行处理。ASP.NET Core的路由是通过EndpointRoutingMiddleware和EndpointMiddleware这两个中间件协作完成的...
-
17
到目前为止,ASP.NET Core提供了两种不同的路由解决方案。传统的路由系统以IRouter对象为核心,我们姑且将其称为IRouter路由。本章介绍的是最早发布于ASP.NET Core 2.2中的新路由系统,由于它采用基于终结点映射的策略,所以我们将其称为终结点路由。终结点路由...
-
20
ASP.NET Core路由中间件[2]: 路由模式 一个Web应用本质上体现为...
-
7
表示路由终结点的RouteEndpoint对象包含以RoutePattern对象表示的路由模式,某个请求能够被成功路由的前提是它满足某个候选终结点的路由模式所体现的路由规则。具体来说,这不仅要求当前请求的URL路径必须满足路由模板指定的路径模式,还需要具体的字符内容满足...
-
6
参考微软官方文档 : https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/middleware/?view=aspnetcore-3.1 一、ASP.NET Core 中间件简介 1.1 定义:中间件是一种装配到应用管道以...
-
8
ASP.NET Core路由中间件[4]: EndpointRoutingMiddleware和EndpointMiddleware ...
-
13
ASP.Net Core 是微软开源的跨平台、可扩展、轻量级的模块化框架,可用于构建高性能的web应用程序。中间件组件可以注入到 ASP.Net Core 请求管道中...
-
14
本文主要目标:记录Middleware的运行原理流程,并绘制流程图。 目录结构: 1、运行环境 2、Demo实践 3、源码追踪 4、AspnetCore内置middleware
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK