返回
.NET Core 3.X路由中间件和终结点中间件
2020-07-02 3678 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则负责配置和执行。
网友点评
提交
相关阅读
.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获取Request.UrlReferer
ASP.NET Core的三种部署方式
.NET Core上传文件报Access xxx.tmp is denied错误
.NET Core开发常用命令
.NET Core 3.0创建一个单独的可执行文件
使用try-convert工具把.NET Framework项目迁移到.NET Core