_repo.GetRoles();
не использует await
ключевое слово
это var roles = _repo.GetRoles();
должно быть
var roles = await _repo.GetRoles();
асинхронное микширование c и non asyn c,
ниже не проверено, но вы должны получить jist
[HttpGet]
public async Task<IActionResult> Get()
{
var roles = **await** _repo.GetRoles();
return new JsonResult(roles);
}
Оригинальный ответ был:
FYI - мой оригинальный ответ было на самом деле правильно ... objectA было ... Task
, так как это то, что возвращалось из _repo.GetRoles();
ваши объекты A имеют ссылки на objectB, который ссылается на objectsA.
это просто конец рекурсии l oop, практически никогда не заканчивающийся попыткой сериализации.
hense возможный цикл объекта
Также вы не включили код, где исключение возможно, выбрасывает JsonResult, поэтому не может видеть, какой сериализатор вы используете.
Кроме того, если вы используете newton Json, то поддержка сложных объектов еще более ограничена.
Дальше - только Q на основе комментариев в комментариях не асинхронная c версия, в качестве основного (контроллера) поток не является асинхронным, если вы не хотите его менять, как указано выше или для ясности
public List<RoleMaster> GetRoles()
{
try
{
var roles = db.RoleMaster.AsNoTracking().ToList();
return roles;
}
catch (Exception)
{
throw;
}
}
Обновление для получения дополнительных указаний
https://docs.microsoft.com/en-us/aspnet/core/web-api/action-return-types?view=aspnetcore-3.1