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

混合路由场景下,常规路由与特性路由哪个优先处理请求?

当同时使用常规路由和特性路由时,哪个会优先处理请求?

这是个非常实用的问题,尤其是在ASP.NET MVC或ASP.NET Core MVC项目里混合两种路由策略的时候。直接给结论:特性路由(Attribute Routing)的优先级高于常规路由(Conventional Routing)。

具体的处理流程是这样的:
当请求命中MVC中间件后,路由系统会先遍历所有通过[Route]、[HttpGet]、[HttpPost]等特性标记的控制器操作——也就是特性路由的定义,把当前请求的URL和这些特性里指定的路由模板做精确匹配。

  • 如果找到完全匹配的特性路由,系统会直接调用对应的控制器操作,整个路由流程到此结束,不会再去尝试匹配常规路由。
  • 只有当特性路由没有找到任何匹配项时,路由系统才会 fallback 到常规路由,开始和预定义的通用模板做比对,提取路由值、匹配控制器和操作。

举个简单的例子更容易理解:
假设你在Startup/Program里注册了常规路由:

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

同时你有一个Home控制器的操作标记了特性路由:

[Route("home/special-action")]
public IActionResult SpecialAction()
{
    return View();
}

当用户请求/home/special-action时,系统会优先匹配这个特性路由,直接执行SpecialAction方法,而不会走常规路由去寻找Home控制器下的SpecialAction操作(哪怕这个操作存在)。

这种优先级设计的逻辑也很清晰:特性路由是针对特定操作的显式URL绑定,更精准,适合定义非通用的、自定义的URL结构;而常规路由是通用的模板匹配,作为兜底方案处理那些没有被特性路由覆盖的请求。

内容的提问来源于stack exchange,提问作者Godfred Boateng

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 10:42:39