首页 > 解决方案 > 在标记为 APIController 的控制器上使用分页时返回不支持的媒体类型

问题描述

将分页添加到 API 控制器后,我现在收到带有不受支持的媒体类型的 json 错误。

我正在使用 ASP.NET Core 2.2。我可以通过注释掉控制器上的 [ApiController] 属性来解决这个问题,但这显然不是首选,我想了解根本问题是什么。

public async Task<ActionResult<BlogPost>> Get(ResourceParameters resourceParameters)
{
    return Ok(await _repository.GetBlogPostsAsync(resourceParameters));
}
// The problem is suppressed by commenting out the ApiController attribute
[Route("api/[controller]")]
//[ApiController]
public class BlogController : ControllerBase
..

响应

// 20190530081824
// https://localhost:5001/api/blog
{
    "type": "https://tools.ietf.org/html/rfc7231#section-6.5.13",
    "title": "Unsupported Media Type",
    "status": 415,
    "traceId": "0HLN4PRV4JD94:00000001"
}

标签: c#asp.net-core.net-coreasp.net-core-mvcentity-framework-core

解决方案


尝试将您的代码更改为此

[Route("api/[controller]/")]
[ApiController]
public class BlogController : Controller

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

确保 FromQuery 或 FromBody 取决于您提交的对象


推荐阅读