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

.NET Core最小API设置可选路由参数后访问返回404的原因

问题原因

.NET Core 最小API的路由匹配有明确规则:仅在路由模板的参数后缀加?声明可选,无法让缺省该参数的路径命中端点,核心问题是:

  • 路由模板里标记为可选的参数,必须同步给对应委托的入参设置默认值,否则路由系统仍会将该参数判定为必填,直接拒绝匹配缺失参数的请求
  • 你当前代码中fundCode为string类型,没有配置默认值,访问/api/fund时路由找不到匹配的端点,自然返回404。
修复方式

给fundCode入参设置默认值即可,修改后代码:

app.MapGet("/api/fund/{fundCode?}", ([FromServices] IMediator mediator, string fundCode = null)
    => mediator.Send(new GetFundsQuery(fundCode)));

修改后两类请求都能正常命中接口:

  • 请求https://localhost:7147/api/fund时,fundCode取值为null
  • 请求https://localhost:7147/api/fund/xxx(xxx为具体基金代码)时,fundCode取值为传入的路径参数值

补充规则:可选路由参数只能放在路由模板的末尾位置,如果放在路由中间段,即使加了?、配置了默认值也无法正常匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 15:33:21