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

C# ApiController中HttpGet多参数传递报错,如何解决?

问题解决

1. 请求URL参数格式错误

你用了多个?分隔查询参数,这违反HTTP规范。正确格式是:第一个参数用?起始,后续所有参数必须用&分隔。

错误URL:

https://localhost:44328/api/rule/GetRuleNew?locale=e?pno=2?modelYear=1

正确URL:

https://localhost:44328/api/rule/GetRuleNew?locale=e&pno=2&modelYear=1

2. 路由配置的潜在问题(非当前报错直接原因)

你的DefaultApiWithId路由对id设置了数字约束(@"\d+"),但GetRule(Guid id)方法接收Guid类型参数,这个路由永远匹配不到该方法。如果要通过Guid访问GetRule,可以新增一个针对Guid的路由并调整顺序:

// 放在DefaultApiWithId路由之前
config.Routes.MapHttpRoute(
    name: "DefaultApiWithGuid",
    routeTemplate: "Api/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional },
    constraints: new { id = @"^[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}$" }
);

修正URL后,GetRuleNew的参数会正确绑定,接口即可正常响应。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 07:55:40