Asp.NetCore Web应用程序中的请求管道和中间件
2021/7/29 22:06:25
本文主要是介绍Asp.NetCore Web应用程序中的请求管道和中间件,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
你是否会迷惑当我们请求一个ASP.NetWeb应用程序以后,它是怎么处理这些请求的,后台是怎么工作的,今天就讲一下Asp.NetCore Web应用程序中的请求处理过程。
上一节,我们讲到,Startup文件中用来配置中间件(middleware),这个中间件就是用来处理请求的。那标题中的请求管道又是什么呢,其实所有的中间件就组成了一个请求管道,我们的请求,到达ASP.NetWeb应用程序,就会被送到第一个中间件中,一个个的访问,每个中间件都对请求进行处理,直到进行到最后一个中间件原路返回处理结果,或者中途被某个中间件拦截直接返回处理结果。
这种中间件的访问处理就像俄罗斯套娃一样,一层层深入访问,一层层返回结果。下面来看一下startup中的初始中间件都有哪些。
注意,中间件的顺序也是有规律的。错误处理中间件的添加逻辑,总是第一位的,
if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseExceptionHandler("/Home/Error"); app.UseHsts(); }
Endpoints中间件总是在最后,它用于处理以上中间件都没有捕获到的情况,初始配置是返回homecontroller中的index方法,他是直接拦截并返回的,所以在它以后的中间件,总是得不到执行。
app.UseEndpoints(endpoints => { endpoints.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); });
我们再回过头来看这个方法声明
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
如果在VS中打开,你会发现它是“0 references”,没有引用那它是怎么执行的呢,其实,我们不会手动去调用它,这个方法是交由CLR去调用的,我们可以看到负责添加中间件的参数是继承了IApplicationBuilder 这个接口的对象,所以很清楚的,我们了解到,这个类是负责Build Application 的,所以这个方法是参与到程序的生成期的,不是运行期的。
.NetCore为我们提供了一些必须的中间件,约定以Use开头,我们可以直接去添加使用,下面简单解释一些常用中间件的作用:
app.UseHttpsRedirection();//负责重定向页面
app.UseStaticFiles();//添加静态文件(wwwroot中的)
app.UseRouting();//对路由的支持
app.UseAuthorization();//负责授权
请求和响应,就是在请求管道中被中间件层层处理并返回的过程,下一节会演示一下如何自定义一个中间件,我们可以通过自定义中间件处理逻辑来处理请求
这篇关于Asp.NetCore Web应用程序中的请求管道和中间件的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#
- 2024-01-24Advanced .Net Debugging 1:你必须知道的调试工具
- 2024-01-24.NET集成IdGenerator生成分布式全局唯一ID