我试图在我的一个控制器中返回学生列表,但我总是得到 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 预览版和 AspNetCoreNewtonsoftJson 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中删除。