雷达智富

首页 > 内容 > 程序笔记 > 正文

程序笔记

.NET Core 3.X路由中间件和终结点中间件

2024-10-14 32

在ASP.NET Core 3.X里app.UseRouting();和app.UseEndpoints成对出现。

app.UseRouting()负责匹配路由与终结点(端点),解析出路由信息(把请求解析成路由),写进HttpContext,传给下一个中间件。

UseRouting根据路由信息来选择一个端点。端点就是一个终端中间件(末尾的),布置又一个,每一个Action都可以是一个终端中间件。

UseEndpoints终结点中间件,与UseRouting中间件必须成对使用,两个中间件之间还能添加一些其他的中间件。这里是配置中间件和路由之间的映射。终结点可以简单理解为 MVC的/控制器/action。

以下示例说明UseRouting中间件获取路由信息,包括路由数据,获取对应中间件。

app.UseRouting();
//自己添加一个中间件,获取路由信息
app.Use(async (context, next) =>
            {
                var ep = context.GetEndpoint();
                //如果用模板可以或者值
                var rv = context.Request.RouteValues;
                await next();
            });
app.UseEndpoints(endpoints =>
            {
                endpoints.MapGet("/", async context =>
                {
                    await context.Response.WriteAsync("Hello World!");
                });
                endpoints.MapGet("/Home", async context =>
                {
                    await context.Response.WriteAsync("Hello World!");
                });
            });

如果把自己的中间件放在UseRouting之前,则ep为Null。

UseEndpoints则负责配置和执行。

更新于:28天前
赞一波!

文章评论

评论问答