Tenho uma visão parcial que tenta recuperar um IEnumerable<Post>
do banco de dados usando async ...
Método
public static class PostService
{
public static int PostsPerPage = 50;
public static async Task<IEnumerable<Post>> GetRecentAsync(int page = 0)
{
return await entityFrameworkDbContext.Posts
.ToListAsync();
}
}
PartialView
public async Task<ActionResult> Recent(int page = 0)
{
return PartialView(await PostService.GetRecentAsync(page));
}
E então se eu tentar chamá-lo
@Html.Action("Recent", "Post")
Eu recebo a seguinte exceção
HttpServerUtility.Execute bloqueado enquanto aguarda a conclusão de uma operação assíncrona.
Descrição: Ocorreu uma exceção não tratada durante a execução da solicitação da web atual. Revise o rastreamento de pilha para obter mais informações sobre o erro e onde ele se originou no código.
Detalhes da exceção: System.InvalidOperationException: HttpServerUtility.Execute bloqueado enquanto aguarda a conclusão de uma operação assíncrona.
Por que recebo esse erro? Não deveria funcionar?
Uma solução alternativa para esse problema é tornar o método síncrono conforme exigido pelo MVC, limpar o SynchronizationContext, chamar o método assíncrono e aguardar o resultado, em seguida, restaurar o contexto.
veja minha resposta completa aqui
fonte