Mam częściowy widok, który próbuje pobrać IEnumerable<Post>
z bazy danych przy użyciu async ...
metoda
public static class PostService
{
public static int PostsPerPage = 50;
public static async Task<IEnumerable<Post>> GetRecentAsync(int page = 0)
{
return await entityFrameworkDbContext.Posts
.ToListAsync();
}
}
Częściowy widok
public async Task<ActionResult> Recent(int page = 0)
{
return PartialView(await PostService.GetRecentAsync(page));
}
A potem, jeśli spróbuję to nazwać
@Html.Action("Recent", "Post")
Mam następujący wyjątek
HttpServerUtility.Execute zablokowane podczas oczekiwania na zakończenie operacji asynchronicznej.
Opis: wystąpił nieobsługiwany wyjątek podczas wykonywania bieżącego żądania WWW. Zapoznaj się ze śladami stosu, aby uzyskać więcej informacji o błędzie i miejscu jego powstania w kodzie.
Szczegóły wyjątku: System.InvalidOperationException: HttpServerUtility.Execute zablokowane podczas oczekiwania na zakończenie operacji asynchronicznej.
Dlaczego otrzymuję ten błąd? Czy to nie powinno działać?
Obejściem tego problemu jest synchronizacja metody zgodnie z wymaganiami MVC, wyczyszczenie SynchronizationContext, wywołanie metody asynchronicznej i oczekiwanie na wynik, a następnie przywrócenie kontekstu.
zobacz moją pełną odpowiedź tutaj
źródło