如何在 AspNetCore 3.0 预览版中将引用类型作为 JSON 返回



我试图在我的一个控制器中返回学生列表,但我总是得到 406 不可接受。我有第二个测试控制器,它只返回 Ok(新字符串[] { "value1", "value2" }(; 它用正确的 JSON 响应。

示例控制器:

[Produces("application/json")]
[Route("api/[controller]")]
[ApiController]
public class StudentController : Controller {
{
    ...
    [HttpGet]
    public async Task<IActionResult> GetAll()
    {
        IEnumerable<Student> students = await _repository.GetAllStudentsAsync();
        return Ok(students);
    }
}

学生列表包含一个条目,看起来通常没问题。

该项目使用 AspNetCore App 3.0 预览版和 AspNetCore

NewtonsoftJson 3.0 预览版,因为 JSON 生成已从主 AspNetCore 包中删除。

我添加了

services.AddMvc()
    .AddNewtonsoftJson();

在我的创业.cs。还有什么遗漏吗?

更新 1:

如果我返回带有返回 Json(students( 的学生;它返回一个没有 406 的 json 结果,但它不适用于 Ok(...(。

我用[Produces("application/xml"(]覆盖了其中一个子控制器中的[Produces("application/json"(]。因为我没有提供任何 xml 格式化程序,所以我得到了 406。

最初我尝试了几次 xml/json,因为我缺少服务。AddMvc((.AddNewtonsoftJson((;来自AspNetCore NewtonsoftJson 3.0预览版。这是必需的,因为Newtonsoft.Json在3.0版(源代码(中从Asp Core中删除。

最新更新