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。 子动作看起来被ViewComponent
replace,它可以从视图asynchronous调用,如下所示。 完整的例子在这里和这里
<div> @await Component.InvokeAsync("YourComponent") </div>
有关MVC6的更多信息,请访问http://www.asp.net/vnext/overview/aspnet-vnext/overview
注:这个答案只是一个forms,所以这个问题可以被标记为回答