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

ASP.NET Core 2.2添加分页后ApiController返回415不支持媒体类型求助

解决ASP.NET Core 2.2中[ApiController]导致的415 Unsupported Media Type错误(分页场景)

这个问题的核心在于**[ApiController]属性自动启用的参数绑定源推断特性**。在ASP.NET Core中,当你标记了[ApiController]后,框架会对复杂类型参数(比如你的ResourceParameters)默认采用**请求体(FromBody)**绑定,而不是传统的查询字符串绑定。

而你的分页参数(比如页码、页大小这类)肯定是通过URL查询字符串传递的对吧?这时候服务器期望从请求体获取数据,但你的GET请求本来就不会携带请求体(或者Content-Type不符合要求),所以就抛出了415不支持的媒体类型错误。

最优解决方案

只需要在Get方法的resourceParameters参数上加上[FromQuery]特性,明确告诉框架从查询字符串中绑定这个复杂类型的参数:

public async Task<ActionResult<BlogPost>> Get([FromQuery] ResourceParameters resourceParameters) 
{ 
    return Ok(await _repository.GetBlogPostsAsync(resourceParameters)); 
}

为什么注释[ApiController]能解决问题?

当你注释掉[ApiController]后,框架会回到传统的参数绑定逻辑——复杂类型会自动尝试从查询字符串绑定,所以错误就消失了,但这样会丢失[ApiController]带来的其他便利(比如自动模型验证、强制属性路由、简化响应格式等),显然不是最优选择。

你也可以检查下自己的请求:GET请求确实不应该携带请求体,给分页参数加上[FromQuery]是最贴合REST规范的做法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:53:55