You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core中UseRouting方法工作原理及路由匹配逻辑疑问

关于ASP.NET Core路由中间件与端点匹配的疑问解答

你混淆了请求处理管道的执行顺序和端点注册的时机,这是核心原因:

  • UseRouting()的作用是把「路由匹配中间件」添加到请求处理管道中,这个中间件是在请求进来时才执行匹配逻辑的,但它本身不负责定义端点。
  • 而MapControllerRoute、Map("/something")这类方法,并不是请求处理管道里的中间件,它们是在**应用启动阶段(配置管道的过程中)**就执行的,执行时会把对应的端点规则注册到ASP.NET Core的路由系统中,形成一个全局的端点集合。
  • 也就是说,不管代码里UseRouting()和MapXXX的先后顺序,只要MapXXX在应用启动时被执行过,对应的端点就已经被提前注册好了。当请求进来时,UseRouting中间件直接从这个预注册的端点集合里查找匹配项,自然能匹配到/Home/Index这类控制器路由。

举个你的代码例子:

// ..some other middleware

UseRouting(); 

app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.Map("/something", (context) => context.Response.WriteAsync("Hello World!"));

// some other middleware

这段代码在启动时,会先执行UseRouting()把路由匹配中间件加入管道,接着执行MapControllerRoute和Map("/something")完成两个端点的注册。等真正有请求进来时,请求处理管道会按顺序执行到UseRouting中间件,此时它已经能拿到所有预注册的端点,自然可以完成https://localhost:5000/Home/Index这类请求的匹配。

内容的提问来源于stack exchange,提问作者CortezZ-1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 19:39:55