14.ASP.NET Core请求处理管道
在这篇文章中,我将通过一个示例,来讲解asp.net core中的请求处理管道。在这篇文章中,我们将讨论下面几个点:
- 理解asp.net core请求处理管道
- 怎样在asp.net中创建并注册多个中间件组件?
- 请求管道中,中间件执行的顺序是咋样的?
理解asp.net core请求处理管道
为了理解asp.net core中的请求处理管道,我们来修改一下configure方法。这里我们向请求管道中注册了三个中间件组件。正如你所见,前面两个中间件是使用use扩展方法注册的,最后一个是使用run扩展方法注册的。
代码解释:
首先我们向configure方法注入了日志中间件,也就是ilogger<startup>. program类中的main方法调用 createdefaultbuilder方法,来配置日志。
在上面图片中,你可以发现,日志提供了console、debug、以及eventsource.在这篇例子中,我使用的日志实例来记录日志。
如果你是通过.net core cli来运行程序的话,那么你可以在命令行窗口可以看到日志信息,如果你是通过visual studio来运行程序的话,你可以在输出窗口看到日志信息。
现在运行程序就会发现:
你会看到输出的顺序:
middleware1: incoming request
middleware2: incoming request
middleware3: incoming request handled and response generated
middleware2: outgoing response
middleware1: outgoing response
理解asp.net core请求处理管道的执行顺序
为了理解这个,我们看下,下面的这个图:
当http请求来临的时候,首先被中间件1发现,然后记录日志信息。一旦中间件1记录了日志信息,就会调用next方法,然后就调用中间件2.同样中间件2,调用next方法,调用中间件3.因为中间件3是使用run扩展方法注册的。所以是个终结中间件。这个时候就会回传,也就会打印middleware2: outgoing response,以及middleware1: outgoing response。
需要特别注意的是:
asp.net core请求处理管道,是由一系列有序的中间件组件组成的,他们是一个接一个被调用的。每一个中间件组件可以在调用下一个中间件之前或者之后,执行一些操作。当一个中间件,不去调用下一个中间件,这被称为请求管道短路。中间件可以获取请求也可以处理响应。
你需要记住的是:中间件是按照你添加的顺序执行的,然后响应刚好是相反的顺序。
下篇文章中,我们将学习,asp.net core中使用静态中间件,处理静态文件。这篇文章,我向大家解释了,asp.net core请求处理管道,希望能帮到大家。
上一篇: fastjson rce 利用记录
推荐阅读
-
.Net Core MVC理解新管道处理模型、中间件
-
.NET Core实战项目之CMS 第十四章 开发篇-防止跨站请求伪造(XSRF/CSRF)攻击处理
-
asp.net core webapi处理Post请求中的request payload
-
配置 ASP.NET Core 请求(Request)处理管道
-
【3】Asp.Net Core2.2新版管道处理模型
-
php laravel请求处理管道(装饰者模式)
-
14.ASP.NET Core请求处理管道
-
.Net Core MVC理解新管道处理模型、中间件
-
ASP.NET Core处理管道的深入理解
-
《ASP.NET Core In Action》读书笔记系列三 ASP.NET Core如何处理请求的?