C# WebAPI调用报415 Unsupported Media Type错误求助
解决WebAPI调用415 Unsupported Media Type错误
咱们一步步来排查和解决这个问题:
1. 先修复Content-Type的语法错误
你代码里写的contentType: 'application/json, charset=utf-8'有个关键小问题:HTTP头里的参数分隔必须用分号,而不是逗号。这个格式错误会直接导致服务器无法识别请求的媒体类型,返回415错误。
修改后的正确写法是:
contentType: 'application/json; charset=utf-8'
2. 调整[FromBody]字符串的传递逻辑
ASP.NET Web API对[FromBody]绑定原始字符串的规则有点特殊,你当前的传参方式可能会导致绑定失败:
- 你用
JSON.stringify("Hello!!!")生成的请求体是"Hello!!!"(带外层双引号的JSON字符串),但Web API默认更期望接收JSON对象,而非纯字符串的JSON表示。
这里给你两种稳妥的调整方案:
方案一:直接传递原始字符串
去掉JSON序列化,直接把字符串作为请求体传递:
data: "Hello!!!"
同时保持修改后的contentType: 'application/json; charset=utf-8'即可。
方案二:用DTO类包装参数
这种方式更符合Web API的参数绑定规范,也更易扩展:
先在后端创建一个简单的DTO类:
public class StringRequestDto { public string Content { get; set; } }
然后修改API方法:
[HttpPost] [ResponseType(typeof(IEnumerable<CompositeType>))] public HttpResponseMessage Test(string cox, [FromBody] StringRequestDto request) { // 这里用request.Content获取传递的字符串 ... }
前端对应的请求数据改成:
data: JSON.stringify({ Content: "Hello!!!" })
3. 额外检查点
- 确认Web API项目默认的JSON格式化器没有被移除(默认配置是包含的,但如果有自定义配置需要核对);
- 核对路由匹配:你的请求URL是
http://localhost:0000/api/test/test/cox/Test,要确保cox是路由中定义的参数,和API方法的string cox参数对应上。
把上面的修改尝试后,应该就能解决415错误了。
内容的提问来源于stack exchange,提问作者Джирайя
相关产品推荐
相关产品推荐

