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

.NET Web API POST请求出现415不支持媒体类型错误排查求助

排查.NET与Flask交互时的415 Unsupported Media Type错误

常见原因及解决方法

1. .NET控制器参数绑定或格式化配置问题

  • 确保控制器标记了[ApiController]特性,该特性会自动启用JSON输入格式化,简化参数绑定逻辑。
  • 确认POST方法的参数使用[FromBody]特性,明确告诉.NET从请求体中解析JSON数据:
    [HttpPost]
    public IActionResult AddCategory([FromBody] CategoryRequestModel model)
    {
        // 业务逻辑实现
    }
    
  • 若使用Newtonsoft.Json替代默认的System.Text.Json,需在Startup/Program.cs中正确注册服务:
    builder.Services.AddControllers().AddNewtonsoftJson();
    

2. Flask请求的Content-Type与数据格式不匹配

  • Flask发送请求时,必须使用json=data参数传递数据,而非data=data。前者会自动设置Content-Type: application/json并将数据序列化为标准JSON格式:
    import requests
    
    payload = {
        "Title": "Sample Category",
        "Type": "Default",
        "Icon": "sample-icon.svg"
    }
    res = requests.post("http://your-api-endpoint/api/categories", json=payload)
    
  • 若直接使用data=payload,Flask会发送application/x-www-form-urlencoded格式,.NET默认无法将该格式解析到[FromBody]绑定的模型,直接触发415错误。

3. 模型字段类型或命名不匹配

  • 检查.NET的请求模型(如CategoryRequestModel)与Flask发送的JSON键是否匹配:
    • .NET默认的System.Text.Json对大小写不敏感,但如果手动开启了大小写敏感配置,会导致字段匹配失败。
    • 若Icon字段是文件类型(如.NET中的IFormFile),则不能用JSON传输,需切换到multipart/form-data格式:
      • .NET端修改参数为[FromForm]:
        [HttpPost]
        public IActionResult AddCategory([FromForm] CategoryWithFileModel model)
        {
            // model.Icon为IFormFile类型,可直接处理上传的文件
        }
        
      • Flask端用files参数上传文件:
        files = {"Icon": open("icon.png", "rb")}
        data = {"Title": "Sample", "Type": "Default"}
        res = requests.post("http://your-api-endpoint/api/categories", data=data, files=files)
        

4. Postman测试的细节问题

  • 即使手动设置了Content-Type,也要确保请求体是合法的JSON格式(无语法错误,如逗号遗漏、引号不匹配)。
  • 若测试文件上传,需切换到form-data标签页,分别添加文本字段和文件字段,而非使用raw的JSON格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 07:05:09