asynchronousPartialView导致“HttpServerUtility.Execute阻止…”exception

我有一个局部视图,试图从数据库检索一个IEnumerable<Post>使用asynchronous…

方法

 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)); } 

然后,如果我试图打电话给它

 @Html.Action("Recent", "Post") 

我得到以下exception

HttpServerUtility.Execute在等待asynchronous操作完成时被阻塞。

说明:执行当前Web请求期间发生未处理的exception。 请查看堆栈跟踪,了解有关错误的更多信息以及源代码的位置。

exception详细信息:System.InvalidOperationException:HttpServerUtility.Execute在等待asynchronous操作完成时被阻塞。

为什么我得到这个错误? 它不应该工作吗?

子动作必须同步调用。 问题601我也不知道最近更新的当前MVC库允许这个function。

关于问题601的评论,提示在MVC vNext中添加了这个function。 MVC6。 子动作看起来被ViewComponentreplace,它可以从视图asynchronous调用,如下所示。 完整的例子在这里和这里

 <div> @await Component.InvokeAsync("YourComponent") </div> 

有关MVC6的更多信息,请访问http://www.asp.net/vnext/overview/aspnet-vnext/overview

注:这个答案只是一个forms,所以这个问题可以被标记为回答