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

ASP.NET Core 6 Web API调用存储过程报500错误,请求协助

解决ASP.NET Core 6 Web API调用存储过程返回500错误的问题

首先你代码里存在直接的语法错误,执行存储过程的SQL语句中两个参数之间缺少逗号,这会导致SQL执行失败,触发500错误。

修正后的控制器代码

[HttpGet]
[Route("api/listaEntrePrecios")]
public IEnumerable<Producto> listaEntrePrecios([FromQuery] int minimo, [FromQuery] int maximo)
{
    var parameters = new[]
    {
        new SqlParameter("@Minimo", minimo),
        new SqlParameter("@Maximo", maximo)
    };

    // 给参数添加逗号分隔符
    var lista = context.productos.FromSqlRaw("EXECUTE listaProductoPrecio @Minimo, @Maximo", parameters).ToList();

    return lista;
}

额外排查要点

  • 实体映射检查:确保Producto类的属性与Productos表的字段完全匹配(名称、数据类型一致),存储过程SELECT *返回的所有字段必须能被EF Core正确映射到实体属性,否则会引发映射异常。
  • 添加异常捕获:在方法中增加try-catch块,捕获并输出具体异常信息,便于精准定位问题:
    [HttpGet]
    [Route("api/listaEntrePrecios")]
    public IActionResult listaEntrePrecios([FromQuery] int minimo, [FromQuery] int maximo)
    {
        try
        {
            var parameters = new[]
            {
                new SqlParameter("@Minimo", minimo),
                new SqlParameter("@Maximo", maximo)
            };
    
            var lista = context.productos.FromSqlRaw("EXECUTE listaProductoPrecio @Minimo, @Maximo", parameters).ToList();
            return Ok(lista);
        }
        catch (Exception ex)
        {
            // 可记录日志或返回错误信息(生产环境不建议返回原始异常)
            return StatusCode(500, ex.Message);
        }
    }
    
  • 数据库权限验证:确认应用程序使用的数据库账号拥有执行listaProductoPrecio存储过程的权限。
  • 参数绑定明确性:给方法参数添加[FromQuery]特性,明确参数来自查询字符串,避免路由或参数绑定错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 12:24:20