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

.NET Core 2.1迁移至.NET 6后请求匹配多端点问题

.NET 6路由冲突解决方法

你的问题是因为.NET 6调整了路由匹配逻辑,原来在.NET Core 2.1中能正常区分的路由,现在因为两个Action的路由模板都能匹配/content/game、/content/software这类请求,导致路由歧义。

给你两种可行的解决办法:

方法一:给Index1添加路由约束

直接用正则约束限定pageId只能是game或software,这样只有Index1会匹配这两个值,其他请求自动走Index2:

// 匹配/content/game 或 /content/software,默认请求/content时指向game
[Route("/content/{pageId:regex(^game$|^software$)=game}")]
public IActionResult Index1(string pageId, [FromQuery] int page=1)
{}

// 处理所有/content/*的其他请求
[Route("/content/{package}")]
public IActionResult Index2(string package)
{}

方法二:设置路由优先级

给Index1的路由设置更高的优先级(Order值越小优先级越高),让框架优先匹配Index1的路由,避免歧义:

// 优先匹配这两个路由
[Route("/content/{pageId=game}", Order = -1)]
[Route("/content/{pageId=software}", Order = -1)]
public IActionResult Index1(string pageId, [FromQuery] int page=1)
{}

// 处理剩余的/content/*请求
[Route("/content/{package}")]
public IActionResult Index2(string package)
{}

两种方法都能解决问题,推荐第一种,因为通过约束明确限定了匹配范围,逻辑更清晰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 10:35:40