ASP.NET Core 8 Web API接收JSON时返回415不支持的媒体类型
解决ASP.NET Core 8 Web API POST端点415 Unsupported Media Type错误
以下是几种常见的排查和解决方法:
1. 确认模型绑定配置
ASP.NET Core 8默认自带JSON格式化支持,但如果手动修改过项目配置,需检查Program.cs中是否保留了控制器服务的默认配置:
var builder = WebApplication.CreateBuilder(args); // 确保添加控制器服务,默认包含JSON格式化逻辑 builder.Services.AddControllers(); var app = builder.Build(); app.MapControllers(); app.Run();
如果自定义了格式化器,别不小心移除了JSON相关配置。
2. 检查端点参数与模型
- 必须给POST端点的参数加上
[FromBody]特性,明确告诉框架从请求体绑定JSON数据:
[HttpPost] public IActionResult Post([FromBody] YourModel model) { if (!ModelState.IsValid) { return BadRequest(ModelState); } return Ok(model); }
- 验证你的
YourModel类:属性要有公共的getter和setter,避免用私有构造函数(除非专门配置序列化器支持),不要包含无法序列化的类型。
3. 核对Postman请求细节
- 确认请求头的
Content-Type确实是application/json,别拼写错误(比如写成application/javascript这类错误值),带charset=utf-8后缀是允许的。 - 检查请求体的JSON格式是否合法,比如有没有遗漏逗号、引号不匹配等语法问题,可借助在线JSON校验工具确认。
4. 排查序列化器冲突
如果项目用了第三方序列化器(比如用Newtonsoft.Json替代默认的System.Text.Json),要正确配置:
在Program.cs中添加:
builder.Services.AddControllers().AddNewtonsoftJson();
同时确保Postman的请求格式和序列化器兼容。
5. 确认路由匹配
检查Postman请求的URL和端点路由完全一致,比如端点路由是[HttpPost("api/data")],请求URL就得是http://localhost:xxxx/api/data,路由不匹配也可能间接引发这类错误。
内容的提问来源于stack exchange,提问作者mostafa said
相关产品推荐
相关产品推荐

