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

ASP.NET控制器Post接口报错:the values field is required,断点未触发

ASP.NET Post接口无法触发的问题

问题详情

  • 搭建ASP.NET控制器的Get/Post基础接口,用Postman验证配置,已查阅Stack Overflow相关问题但未解决
  • Get接口正常响应,Post接口报错且断点从未触发

错误截图

Postman请求报错截图

当前控制器代码

[ApiController]
[Route("[controller]")]
public class CoursesTakenController : Controller
{
    [HttpGet]
    public IEnumerable<string> Get()
    {
       return new string[] {"value", "value" };
    }

    [HttpPost]
    public Task<ActionResult<string>> Post([FromBody] string values)
    {
        return Ok(values);
    }
}

已尝试的无效代码

[HttpPost]
public async Task<IActionResult> Post([FromBody] string values)
{
    return Ok();
}

排查解决建议

  1. 修正请求体格式
    Postman发送POST请求时,需在Body选择raw并指定格式为JSON,请求体内容要以双引号包裹(合法JSON字符串),例如:"测试内容"。ASP.NET的[FromBody]绑定string类型时,要求请求体必须是标准JSON字符串,不能直接传递纯文本。
  2. 验证请求地址与方法
    确认Postman请求地址为{你的域名}/CoursesTaken(匹配控制器路由[Route("[controller]")]),请求方法严格选择POST。
  3. 更换模型绑定方式
    直接绑定string类型容易出现格式问题,建议改用自定义类接收参数:
    public class CourseRequest
    {
        public string Values { get; set; }
    }
    
    然后修改Post方法:
    [HttpPost]
    public IActionResult Post([FromBody] CourseRequest request)
    {
        return Ok(request.Values);
    }
    
    Postman请求体改为{"Values":"测试内容"},这种方式模型绑定更稳定。
  4. 检查请求头配置
    确保请求头中Content-Type设置为application/json,ASP.NET默认仅解析该类型的请求体到[FromBody]参数。
  5. 确认路由中间件配置
    检查Program.cs/Startup.cs中是否已正确添加路由与控制器映射:
    app.UseRouting();
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
    });
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 19:35:21