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

.Net Core 5 Post接口返回Incorrect Content-Type: application/json错误如何解决

.NET Core 5 Post请求Content-Type报错排查指南

排查步骤

  • 校验Postman请求配置
    • 确认请求方法为POST,路由与控制器配置匹配
    • 在Headers标签页检查Content-Type字段值为纯application/json,不要携带额外的空格、charset=utf-8等后缀,先排除额外字符导致的格式匹配失败
    • 在Body标签页确认选中raw格式,且右侧下拉框选中JSON,同时校验提交的JSON语法完全合法,无多余逗号、引号不匹配、注释等非法内容
  • 检查项目依赖与配置
    • 确认已安装版本匹配的Microsoft.AspNetCore.Mvc.NewtonsoftJson NuGet包,版本需对应.NET 5的大版本号
    • 检查Startup.cs的Configure方法中间件顺序,确保app.UseRouting()在认证、授权中间件之前,路由匹配规则没有遗漏控制器入口
    • 检查控制器、接口方法上是否标注了[Consumes]特性,如果存在需要确保特性值包含application/json,避免媒体类型限制拦截合法请求
    • 确认ProjectRequest类包含public无参构造函数,属性的类型和命名与提交的JSON结构匹配,没有必填字段缺失的情况
  • 添加调试逻辑定位根因
    • 可以在Configure方法最顶部添加请求日志中间件,打印服务端实际收到的请求头:
      app.Use(async (context, next) =>
      {
          Console.WriteLine($"Received Content-Type: {context.Request.ContentType}");
          await next.Invoke();
      });
      
      发起请求后查看控制台输出,如果Content-Type和Postman设置的不一致,说明存在网关、反向代理或者其他中间件修改了请求头
    • 临时修改NewtonsoftJson配置,打印序列化报错信息:
      .AddNewtonsoftJson(options =>
      {
          options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
          options.SerializerSettings.Error = (sender, args) =>
          {
              Console.WriteLine($"序列化失败: {args.ErrorContext.Error.Message}");
              args.ErrorContext.Handled = true;
          };
      })
      
      如果控制台有序列化错误输出,说明是模型绑定阶段反序列化失败触发的报错,和Content-Type本身无关
  • 临时简化接口排查
    把接口参数临时修改为[FromBody] JsonElement rawJson,如果请求可以正常进入方法,说明是ProjectRequest类的结构和JSON不匹配导致的模型绑定失败,只需要调整类定义或者提交的JSON结构即可修复问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 23:09:04