我试图返回我的一个控制器中的学生列表,但我总是收到406 Not Acceptable。我有第二个测试控制器,它仅返回 Ok(new string [] {“ 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 preview和AspNetCore NewtonsoftJson 3.0 preview,因为从主AspNetCore程序包中删除了JSON生成。
我添加了
services.AddMvc()
.AddNewtonsoftJson();
在我的Startup.cs中。还有其他东西吗?
更新1:
如果我用 return Json(students); 返回学生,则它返回的json结果不带406,但不适用于Ok(...)。
答案 0 :(得分:0)
我已经用[Produces(“ application / xml”)]覆盖了其中一个子控制器中的[Produces(“ application / json”)]。因为我没有提供任何xml Formatter,所以得到了406。
最初我尝试了xml / json几次,因为我缺少AspNetCore NewtonsoftJson 3.0 preview中的services.AddMvc() .AddNewtonsoftJson(); 。之所以需要它,是因为Newtonsoft.Json已从3.0版(source)的Asp Core中删除。