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

ASP.NET Core 6.0:如何编写匹配/path:action格式URL的动作路由模板?

ASP.NET Core 6.0 路由模板解决方案

要实现匹配/api/1/pets/123/toys/456:renew的路由,核心是处理路由模板中冒号的特殊含义——ASP.NET Core路由里冒号默认是参数约束的分隔符,直接写:renew会被路由系统误判为约束语法,而非字面量后缀。

正确的写法是对冒号进行转义,在动作方法上使用带转义的路由模板:

[HttpPost] // 根据业务需求选择合适的HTTP方法(如Put、Post)
[Route(@"\:renew")]
public IActionResult Renew(int version, long petId, long toyId)
{
    // 业务逻辑代码
    return Ok();
}

也可以使用双反斜杠的转义写法(适配C#字符串的转义规则):

[Route("\\:renew")]

为什么之前的写法不生效?

  • 使用[Route(":renew")]时,路由系统会将:renew解析为参数约束规则,而非字面量后缀,导致无法匹配目标URL,返回404。
  • 使用[Route("renew")]时,路由系统会自动在控制器路由前缀后添加斜杠,生成path/renew格式的路径,不符合path:renew的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 04:15:42