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

.NET Core 3.1 API迁移后路由模板报{}需转义错误如何解决

错误原因

该报错由路由正则中的量词大括号未转义触发:

  • ASP.NET Core路由系统会将模板内的{优先识别为路由参数的起始标记,你第3、4条路由正则中的{3,30}属于正则量词,没有做转义的情况下会被路由系统判定为未闭合的路由参数占位符,直接抛出对应错误。
  • 你之前将正则的[]改为双层[[]]的操作是正确的,因为路由系统中[]是可选路由段的标记,需要双层转义避免被路由系统提前解析。
  • 旧版ASP.NET API的路由解析对正则内部特殊字符的容错性更高,不会主动识别正则内部的{}作为路由参数标记,因此原有配置可以正常运行。
解决方案

将第3、4条路由正则中的{3,30}的大括号转义为{{3,30}}即可,修改后的路由配置如下:

  • 第3条路由:[Route(@"employee/{samId:regex(^[[A-Za-z0-9._-]]{{3,30}}$)}")]
  • 第4条路由:[Route(@"homepage/{samId:regex(^[[a-zA-Z0-9_.-]]{{3,30}}$)}")]

转义后路由系统会先把{{、}}还原为单个大括号再传递给正则验证逻辑,不会影响原有正则的匹配规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 14:18:01