中间件官网文档解释:中间件是一种装配到应用管道以处理请求和响应的软件 每个中间件:

  • 选择是否将请求传递到管道中的下一个组件。

  • 可在管道中的下一个组件前后执行工作。

使用 IApplicationBuilder 创建中间件管道

ASP.NET Core 请求管道包含一系列请求委托,依次调用。下图演示了这一概念。沿黑色箭头执行。

IApplicationBuilder提供了三个扩展方法配置请求委托

  • app.Run 作用添加一个终端中间件,因为不在向下传递请求,常常公开在管道末尾运行。实例代码
  • app.Use 将多个请求委托链接在一起。next 参数表示管道中的下一个委托。可通过不 调用 next 参数使管道短路等同于aap.run。通常可在下一个委托前后执行操作,如以下示例所示:

  • Map 扩展用作约定来创建管道分支。Map 基于给定请求路径的匹配项来创建请求管道分支。如果请求路径以给定路径开头,则执行分支。实例代码如下

自定义中间件

以下演示记录api输入输出参数的中间件。

1.创建一个webapi项目,在默认的WeatherForecastController控制器中添加一个简单的post方法,代码如下

选择之后默认代码如下:

上面invoke不是异步的,我们自己可以改动,以下代码展示 一个api请求的输入参数和输出信息的日志打印

控制台上打印的信息如下:

.NET Core 3.0 中间件 Middleware相关推荐

  1. ASP.NET Core -中间件(Middleware)使用

    ASP.NET Core开发,开发并使用中间件(Middleware). 中间件是被组装成一个应用程序管道来处理请求和响应的软件组件. 每个组件选择是否传递给管道中的下一个组件的请求,并能之前和下一组 ...

  2. ASP.NET Core 3.0 自动挡换手动挡:在 Middleware 中执行 Controller Action

    最近由于发现奇怪的 System.Data.SqlClient 性能问题(详见之前的博文),被迫提前了向 .NET Core 3.0 的升级工作(3.0 Preview 5 中问题已被修复).郁闷的是 ...

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

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

  4. ASP.NET Core 1.0中的管道-中间件模式

    ASP.NET Core 1.0借鉴了Katana项目的管道设计(Pipeline).日志记录.用户认证.MVC等模块都以中间件(Middleware)的方式注册在管道中.显而易见这样的设计非常松耦合 ...

  5. [译]ASP.NET Core 2.0 带初始参数的中间件

    问题 如何在ASP.NET Core 2.0向中间件传入初始参数? 答案 在一个空项目中,创建一个POCO(Plain Old CLR Object)来保存中间件所需的参数: public class ...

  6. ASP.NET Core 开发-中间件(Middleware)

    ASP.NET Core开发,开发并使用中间件(Middleware). 中间件是被组装成一个应用程序管道来处理请求和响应的软件组件. 每个组件选择是否传递给管道中的下一个组件的请求,并能之前和下一组 ...

  7. ASP.NET Core 2.0 : 三. 项目结构

    ASP.NET Core 2.0 : 三. 项目结构 原文:ASP.NET Core 2.0 : 三. 项目结构 本章我们一起来对比着ASP.NET Framework版本看一下ASP.NET Cor ...

  8. 【转载】从头编写 asp.net core 2.0 web api 基础框架 (1)

    工具: 1.Visual Studio 2017 V15.3.5+ 2.Postman (Chrome的App) 3.Chrome (最好是) 关于.net core或者.net core 2.0的相 ...

  9. asp.net core 3.0 中使用 swagger

    asp.net core 3.0 中使用 swagger Intro 上次更新了 asp.net core 3.0 简单的记录了一下 swagger 的使用,那个项目的 api 比较简单,都是匿名接口 ...

最新文章

  1. Django快速开发之投票系统
  2. tf.keras.optimizers.Adam 优化器 示例
  3. Tensorflow实现的深度NLP模型集锦(附资源)
  4. 基于分类任务的信号(EEG)处理--代码分步解析
  5. 最小花费(信息学奥赛一本通-T1344)
  6. jupyter 教程
  7. linux raid卡驱动添加到内核,如何在Linux上编译RAID卡驱动方法详解
  8. CentOS 7 安装微信小程序开发工具
  9. 正睿17+2天集训总结TOT
  10. 不止防JSON技术绕过,RASP相比WAF的七大技术优势
  11. asp.net 使用UrlRewritingNet.UrlRewriter组件URL重写,伪静态详解
  12. 一文解读时间序列基本概念
  13. Matomo API 官方接口详情
  14. c语言mn间有多少素数,素数表达式p=2a+1 (a ≠ 2mn+m+n)由此出发看哥猜、挛猜比较清晰...
  15. 谷底飞龙的技术博客集
  16. Java Lambda 多级分组
  17. 易路代理怎么用?911代理为什么突然被停了,还有哪些代理可以选择
  18. 技术分享 | 实测在 after_sync 中使用 gh-ost是如何丢数据的
  19. java word导出图片格式_用java怎么将word文档转成图片格式
  20. XShell、XFtp免费许可证增强:删除标签限制!

热门文章

  1. 关于C#中实现两个应用程序消息通讯的问题
  2. Android 的基本组件之一 Gallery
  3. Asp组件中级入门与精通系列之五
  4. sci-hub谷歌插件_Google Home Hub具有隐藏屏幕设置菜单
  5. 永不丢失照片:防弹照片备份的完整指南
  6. 导入工程后编译不过,报错: apply plugin: 'com.github.dcendents.android-maven'
  7. 运维前线:一线运维专家的运维方法、技巧与实践导读
  8. 使用js代码将HTML Table导出为Excel
  9. 微软职位内部推荐-Software Development Engineer 2
  10. XML--使用XML来将字符串分隔成行数据