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

WebAPI端点可达但所有传入参数均为空的问题求助

问题根因

你定义的WebAPI接口通过[HttpGet]特性配置了路由规则,要求auditReviewId、actioneeId、entries三个参数从URL路径中提取,但你调用接口时将所有参数拼接在了查询字符串(?之后的部分),路由匹配阶段无法从路径中获取到对应参数,因此接口接收到的都是参数的默认空值。

解决办法

你可以选择任意一种适配方案解决该问题:

  • 方案1:调整接口定义,允许参数从查询字符串读取
    两种修改方式二选一即可:

    // 移除路由模板中的路径参数,默认会自动匹配查询字符串的同名参数
    [HttpGet("GetAuditReviewActions")]
    public IEnumerable<AuditReviewActionDto> GetAuditReviewActions(int auditReviewId, int? actioneeId = null, int? entries = null)
    

    或者

    // 保留原有路由模板,显式标注参数从查询字符串读取
    [HttpGet("/{auditReviewId}/{actioneeId?}/{entries?}")]
    public IEnumerable<AuditReviewActionDto> GetAuditReviewActions([FromQuery] int auditReviewId, [FromQuery] int? actioneeId = null, [FromQuery] int? entries = null)
    
  • 方案2:调整接口调用逻辑,按路由规则拼接路径参数
    如果你不想修改现有接口定义,就把调用时的参数拼接方式改为路径形式,注意可选参数为空时不需要拼接:

    var client = LocalHttpClient.CreateClient("UarBase");
    var url = $"api/AuditDashboard/GetAuditReviewActions/{logId}";
    if (SelectedKey != null) url += $"/{SelectedKey}";
    if (Limit != null) url += $"/{Limit}";
    var response = client.GetAsync(url).Result;
    
额外注意

直接调用.Result同步等待异步请求存在线程死锁风险,非特殊场景推荐使用await异步等待请求返回

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 03:06:03