ASP.NET控制器Post接口报错:the values field is required,断点未触发
ASP.NET Post接口无法触发的问题
问题详情
- 搭建ASP.NET控制器的Get/Post基础接口,用Postman验证配置,已查阅Stack Overflow相关问题但未解决
- Get接口正常响应,Post接口报错且断点从未触发
错误截图

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

