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

.NET Core控制器无法从查询字符串接收正确输入排查

问题分析与解决

问题核心是查询参数名称不匹配:

  • Angular客户端getInstitutionSettings方法中,传递的查询参数键为id
  • 但.NET Core的Get控制器方法,接收参数的名称是instId([FromQuery] Guid instId),两者名称不一致,导致.NET无法正确绑定参数值,因此收到空GUID

而getAllInstitutionSettings能正常工作,是因为客户端传递的参数键id,和.NET控制器GetAll方法的参数名id完全匹配,参数绑定成功。

修正方案(二选一即可)

方案1:修改Angular客户端参数名,与.NET控制器对齐

getInstitutionSettings(institutionId: string): Promise<any | undefined> {
    return this.http
            .get<InstitutionSettingsModel>('https://localhost:7205/api/v1/Settings/get', {
                params: {
                    instId: institutionId, // 将参数键从id改为instId
                },
            })
            .toPromise();
}

方案2:修改.NET控制器参数名,与客户端传递的参数键对齐

[HttpGet]
[Route("get")]
[EnableCors]
[Produces("application/json")]
[SwaggerResponse(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
public async Task<IActionResult> Get([FromQuery] Guid id) // 将参数名从instId改为id
{
    SettingsReadRequestModel req = new SettingsReadRequestModel()
    {
        Id = id,
        JsonWebToken = this.TestJwt,
        CancellationToken = CancellationToken.None
    };

    if (id != Guid.Empty)
    {
        SettingsGetResponseModel res = await this.Service.GetSettingsAsync(req);
        return this.Ok(res.Institution);
    }
    else
    {
        return this.BadRequest();
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 15:29:59