返回
.NET Core 3.X路由中间件和终结点中间件
2020-07-02 3348 0
在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则负责配置和执行。
网友点评
提交
相关阅读
PluginCore 基于 ASP.NET Core 的轻量级插件框架
.NET Core基础面试题
.NET Core HttpClient报错The character set provided in ContentType is invalid. Cannot read content as string using an invalid character set.
.NET Core判断发起请求的设备
.NET Core 3.0创建一个单独的可执行文件
.NET Core不重新编译立即更新页面
.NET Core Consul服务发现
Asp.Net Core进程内托管 和 进程外托管的区别