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()把请求发送到管道的下一站。

ASP.NET Core 中间件分类相关推荐

  1. ASP.NET Core 中间件(Middleware)详解

    ASP.NET Core 中间件(Middleware)详解 原文:ASP.NET Core 中间件(Middleware)详解 本文为官方文档译文,官方文档现已非机器翻译 https://docs. ...

  2. ASP.NET Core中间件初始化探究

    前言 在日常使用ASP.NET Core开发的过程中我们多多少少会设计到使用中间件的场景,ASP.NET Core默认也为我们内置了许多的中间件,甚至有时候我们需要自定义中间件来帮我们处理一些请求管道 ...

  3. ASP.NET Core 中间件

    1.前言 中间件(middleware)是一种装配到应用管道以处理请求和响应的组件.每个组件: ●可选择是否将请求传递到管道中的下一个组件. ●可在管道中的下一个组件前后执行工作. 请求委托(requ ...

  4. 如何一秒钟从头构建一个 ASP.NET Core 中间件

    前言 其实地上本没有路,走的人多了,也便成了路. -- 鲁迅 就像上面鲁迅说的那样,其实在我们开发中间件的过程中,微软并没有制定一些策略或者文档来约束你如何编写一个中间件程序, 但是其中却存在者一些最 ...

  5. ASP.NET Core 中间件Diagnostics使用

    ASP.NET Core 中间件(Middleware)Diagnostics使用.对于中间件的介绍可以查看之前的文章ASP.NET Core 开发-中间件(Middleware). Diagnost ...

  6. ASP.NET Core中间件(Middleware)实现WCF SOAP服务端解析

    ASP.NET Core中间件(Middleware)进阶学习实现SOAP 解析. 本篇将介绍实现ASP.NET Core SOAP服务端解析,而不是ASP.NET Core整个WCF host. 因 ...

  7. ASP.NET Core 中间件Diagnostics使用 异常和错误信息

    ASP.NET Core 中间件Diagnostics使用 异常和错误信息 参考文章: (1)ASP.NET Core 中间件Diagnostics使用 异常和错误信息 (2)https://www. ...

  8. 【netcore】 ASP.NET Core 中间件

    基本概念 中间件是一种装配到应用管道以处理请求和响应的软件. 每个组件: 选择是否将请求传递到管道中的下一个组件. 可在管道中的下一个组件前后执行工作. 请求委托用于生成请求管道. 请求委托处理每个 ...

  9. ASP.NET Core中间件实现分布式 Session(转载)

    ASP.NET Core中间件实现分布式 Session 1. ASP.NET Core中间件详解 1.1. 中间件原理 1.1.1. 什么是中间件 1.1.2. 中间件执行过程 1.1.3. 中间件 ...

最新文章

  1. python浪漫表白代码
  2. 算法导论--python--插入排序
  3. Bazel发布Beta版本,增加对Groovy、Rust和Scala语言的支持
  4. java文件复制速度_java中文件复制得速度测试
  5. 人工神经网络之激活函数总结
  6. 8080:The Tomcat connector configured to listen on port 8080 failed to start 的解决办法
  7. 深入理解C语言指针的奥秘-4
  8. 数学表达式3+(a+b)2对应的python表达式是_与数学表达式cd/2ab对应的Python表达式中,不正确的是:...
  9. 图画日记怎么画_期末到了,孩子不会复习,可以试试画思维导图的方法
  10. 华为云HCIA含金量,华为HCIA题库
  11. 51单片机学习笔记【九】——红外通信实验
  12. 我为什么不愿意买衣服
  13. 拟杆菌预防肺炎克雷伯菌定殖和传播
  14. 最标准的html模板
  15. 门控循环单元(Gate Recurrent Unit,GRU)
  16. jmeter分布式报错,Error in rconfigure() method java.rmi.ConnectException: Connection refused to ho st
  17. 朱雀雀openfire+spark相关的中文资料
  18. 安卓基于BLE的蓝牙开发入门
  19. 啊哈C语言 第六章 【代码】【习题答案】
  20. 人工智能:通过Python实现语音合成的案例

热门文章

  1. ArrayList 的实现原理
  2. 【Maven实用技巧】03. Maven 编译打包时如何忽略测试用例
  3. apache 静态编译和动态编译参考
  4. C# Socket编程笔记(转)
  5. objective-c中的static
  6. python实现异步的几种方式_终于搞明白了,异步Python比同步Python究竟快在哪里?...
  7. requests保存图片
  8. JavaScript-client、offset、scroll、定时器
  9. 【Flutter教程】从零构建电商应用(一)
  10. Spring Boot 使用Redis