#entity-framework-core #blazor-client-side #.net-5
#entity-framework-core #blazor-на стороне клиента #.net-5
Вопрос:
После того, как я включил дочерний объект в вызов базы данных, я получаю статус 500 на клиенте. Если я пропущу включенную часть, это сработает. За исключением, конечно, я не получаю все данные. Кто-нибудь знает, что я чего-то не хватает или .net 5 или EF Core 5 работают по-другому.
Контроллер:
[HttpGet("getsupport")]
public async Task<IActionResult> GetSupport(Guid id)
{
var output = await css.GetSupport(id);
//All the data is correct here.
return Ok(output.ToList());
}
Вызов базы данных:
public async Task<IEnumerable<Support>> GetSupport(Guid Id)
{
//This gives httpstatus 500 calling from the client.
return db.Support.Include(x => x.SupportLevel).Where(x => x.Id == Id);
}
public async Task<IEnumerable<Support>> GetSupport(Guid Id)
{
//This works when calling from the client.
return db.Support.Where(x => x.Id == Id);
}
На клиенте вызов выглядит следующим образом.
var support = await http.GetFromJsonAsync<List<Support>>("api/support/GetSupport");
//This returns 500.
Комментарии:
1. 500 — это ошибка сервера, которая обычно означает, что генерируется исключение. Какую ошибку вы видите?
2. На сервере ничего. Как я уже писал, все в порядке. В списке есть все данные, даже включенные данные, у меня есть попытка поймать в контроллере, который ничего не улавливает.
3. 500 буквально означает «Внутренняя ошибка сервера», поэтому на сервере что-то есть. Попробуйте просмотреть свои журналы, средство просмотра событий или запустите его самостоятельно и посмотрите консоль. Сообщите нам о возникшей ошибке.
4. Спасибо! Я устал думать о просмотре в средстве просмотра событий. Мне не хватало: services. AddControllersWithViews() . AddNewtonsoftJson(параметры => параметры. SerializerSettings. ReferenceLoopHandling = Newtonsoft.Json. Обработка ссылок. Игнорировать );