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

ASP.NET Core Web API POST请求失效问题排查

问题诊断与解决方案

问题不在launchsettings.json文件中,核心错误是前端请求的数据格式与后端API的参数绑定逻辑不匹配,导致ASP.NET Core无法正确解析请求内容,进而返回错误。

具体原因分析

后端控制器的Calculate方法定义了string input参数,但前端发送的是JSON格式对象{ numbers: "xxx" },且存在两个关键不匹配:

  1. 后端参数未标注[FromBody]特性,ASP.NET Core默认不会从请求体中读取普通字符串参数;
  2. 前端JSON的键名是numbers,与后端参数名input不一致,无法自动映射。

两种解决方式

方式一:调整前端请求,直接发送字符串

修改前端fetch请求,将输入的数字字符串直接作为请求体发送,而非包裹在JSON对象中:

const response = await fetch("http://localhost:44313/api/TextCalculator", {
    method: "POST",
    headers: {
        "Content-Type": "application/json",
    },
    body: JSON.stringify(numbers), // 直接传递字符串,而非对象
});

同时给后端参数添加[FromBody]特性,明确指定从请求体读取数据:

[HttpPost]
public string Calculate([FromBody] string input)
{
    return new TextCalculator().Add(input);
}

方式二:调整后端参数,匹配前端JSON结构

创建一个与前端请求结构对应的DTO类,让ASP.NET Core自动映射JSON内容:

public class CalculatorRequest
{
    public string Numbers { get; set; }
}

修改控制器方法,接收这个DTO实例:

[HttpPost]
public string Calculate([FromBody] CalculatorRequest request)
{
    return new TextCalculator().Add(request.Numbers);
}

这种方式下前端代码无需修改,即可正常完成请求。

额外注意事项

如果API是通过APIProject配置项启动(而非IIS Express),前端请求的端口要对应launchsettings.json中applicationUrl配置的https://localhost:5001或http://localhost:5000,避免因端口不匹配导致连接错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 04:05:54