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

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,提问作者Джирайя

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:38:46