Asp.net mvc 5 异步控制器方法显示任务的类型名称

Asp.net mvc 5 异步控制器方法显示任务的类型名称,asp.net-mvc-5,async-await,task,Asp.net Mvc 5,Async Await,Task,我正在玩ASP.NETMVC5和RavenDB。我想使用Raven的异步API,但我一生都无法让它工作 我的控制器实际查询结果是伪造的,因为数据库中没有数据 公共类控制器:控制器 { 公共异步任务索引同步 { var books=this.documentSession.Query; Book Book=等待books.FirstOrDefaultAsync?? 新书{Title=编程WCF服务,ASIN=B0043D2DUK}; 返回此.Viewbook; } } 和视图IndexAsync.

我正在玩ASP.NETMVC5和RavenDB。我想使用Raven的异步API,但我一生都无法让它工作

我的控制器实际查询结果是伪造的,因为数据库中没有数据

公共类控制器:控制器 { 公共异步任务索引同步 { var books=this.documentSession.Query; Book Book=等待books.FirstOrDefaultAsync?? 新书{Title=编程WCF服务,ASIN=B0043D2DUK}; 返回此.Viewbook; } } 和视图IndexAsync.cshtml

@使用Hydra.FubuConventions @模型Hydra.Models.Book @{ ViewBag.Title=书籍异步; } 书籍异步 @Html.FormBlockx=>x.Title @Html.FormBlockx=>x.ASIN Web.config

当我使用一个同步控制器方法为它提供一个模型时,它工作得非常好。但对于异步方法,它只显示

System.Threading.Tasks.Task1[System.Web.Mvc.ActionResult]`

我在这里发现了大量关于stackoverflow的帖子,指出MVC的旧版本可能是问题所在。但我在输出文件夹中检查了MVC DLL System.Web.Helpers v3.0.11001.0、System.Web.MVC v5.0.11001.0和System.Web.WebPages v3.0.11001.0的版本,这些版本似乎是正确的

你知道我遗漏了什么吗

更新

我比较了加载的程序集列表。除了在其中一个项目中加载的程序集的明显差异之外,它们是匹配的。web.config是相同的。我用新项目中使用的测试存根替换了对RavenDB的调用。仍然获取类型名称而不是视图。

您必须以.NET 4.5为目标,并在web.config中将httpRuntime.targetFramework设置为4.5。

您的web.config缺少在新MVC项目上找到的程序集重定向指令。我怀疑较旧的MVC程序集安装在GAC中,并由您的应用程序拾取

在任何情况下,该行为都是典型的版本不匹配。您需要通过比较您的项目和新的、干净的MVC5项目之间的差异来找到加载旧程序集的原因

在新的MVC 5.2项目中,web配置中的部分包含以下程序集重定向:


您应该将重定向从clean项目复制到旧项目,并查看这是否解决了问题

如果使用自定义ControllerActionInvoker,则必须从AsyncControllerActionInvoker继承它

您是否从早期的MVC版本迁移了项目?创建一个新项目并添加一个搭建的异步控制器,以确保异步控制器能够正常工作。如果他们不这样做,您的开发环境中就会缺少包,但我对此表示怀疑。您可能在web中配置了错误的版本。config@PanagiotisKanavos空项目按预期工作…@SebastianWeber:由于您有一个有效的解决方案和一个无效的解决方案,因此只需找出两者之间的差异。@PanagiotisKanavos程序集版本看起来相同。Web.config是相同的。我甚至使用了相同的测试存根而不是RavenDB。还有什么想法吗?您的web.config缺少指向最新MVC版本的程序集重定向元素。Project的目标框架在Project属性中设置为.NET framework 4.5。如上面的web.config所示,httpRuntime.targetFramework也设置为4.5,我非常感谢您的帮助。但是重定向并没有解决问题。顺便说一句,我仍然使用VS2012的MVC 5.0。clean项目证明您在某处加载了错误的MVC版本。我发布的具体版本号是针对5.2的。您是否使用了clean项目中的重定向?您是否也从项目文件夹中删除了任何MVC DLL?您可能在某个地方复制了旧版本,但忘记了它。清理bin文件夹。您不需要任何DLL,它将在您构建项目时重新创建。clean项目没有任何重定向。我更新了我的问题项目中的所有nuget包,添加了大量重定向,但也不起作用。