Tengo una vista parcial que intenta recuperar una IEnumerable<Post>
de la base de datos 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();
}
}
Vista parcial
public async Task<ActionResult> Recent(int page = 0)
{
return PartialView(await PostService.GetRecentAsync(page));
}
Y luego si trato de llamarlo
@Html.Action("Recent", "Post")
Obtengo la siguiente excepción
HttpServerUtility.Execute bloqueado mientras espera que se complete una operación asincrónica.
Descripción: se produjo una excepción no controlada durante la ejecución de la solicitud web actual. Revise el seguimiento de la pila para obtener más información sobre el error y dónde se originó en el código.
Detalles de la excepción: System.InvalidOperationException: HttpServerUtility.Execute bloqueado mientras se espera que se complete una operación asincrónica.
¿Por qué recibo este error? ¿No debería funcionar?
Una solución para este problema es sincronizar el método según lo requiera MVC, borrar SynchronizationContext, llamar al método async y esperar el resultado, luego restaurar el contexto.
mira mi respuesta completa aquí
fuente