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

特定服务器出现HTTP 415不支持媒体类型错误,如何排查?

.NET Framework 4.5 API PUT/POST请求返回415 Unsupported Media Type错误

问题背景

网站基于.NET Framework 4.5.0、jQuery和KnockoutJS,已稳定运行6-7年。相同AJAX代码在测试服务器运行正常,但生产服务器上所有API的PUT/POST请求均返回HTTP Error 415 - Unsupported media type错误,即使是简单JSON负载也失败。

Chrome控制台返回的响应内容:

{"Message":"The request contains an entity body but no Content-Type header. The inferred media type 'application/octet-stream' is not supported for this resource."}

已尝试的操作:指定Content-Type为application/json、调整charset参数、设置Content-Encoding,均无效;在两个环境中修改charset=utf8或charset=utf-8到请求头,测试服务器始终正常,生产服务器始终报错。两台服务器均使用NetScaler负载均衡,框架版本和Windows更新一致,仅web.config配置不同。

涉事AJAX代码

$.ajax({
    url: '/api/calendrierUsager/preferences',
    type: 'PUT',
    data: JSON.stringify(calendrier.configuration.viewModel.preferences()),
    contentType: "application/json; charset=utf-8",
    success: function(result) { ... }
});

可能的服务器配置排查方向

  • NetScaler负载均衡规则:对比测试与生产环境的NetScaler配置,检查是否存在修改、剥离请求头的规则,尤其是是否误删了Content-Type头。重点查看HTTP请求头的转发、过滤策略
  • IIS请求筛选设置:检查生产服务器IIS的请求筛选模块,是否有规则限制Content-Type头的传递,或阻止PUT/POST请求的特定头信息
  • web.config配置差异:对比测试与生产的web.config,重点关注:
    • <httpModules>或<modules>节点的自定义模块,是否有模块在生产环境中修改了请求头
    • <handlers>节点中API对应处理程序(如Web API Handler)的配置是否一致,是否生产环境缺少必要配置项
    • <system.webServer>下的<security>、<rewrite>规则,是否存在重写或修改请求头的逻辑
  • IIS MIME类型配置:确认生产服务器IIS是否正确配置了application/json的MIME类型,避免因类型缺失导致请求处理异常
  • 防火墙/安全软件拦截:排查生产环境的防火墙、安全防护软件,是否存在拦截或修改HTTP请求头的情况,导致Content-Type头丢失
  • Web API格式化器配置:检查web.config中Web API的格式化器设置,确认生产环境是否正确注册了application/json媒体类型的支持,未限制JSON格式化器的使用

内容的提问来源于stack exchange,提问作者Jean-Sébastien Gervais

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 20:45:54