我正在玩ASP.NET MVC5和RavenDB。我想使用Raven的异步API,但在我的生活中无法使其工作。异步控制器方法显示任务的类型名称<ActionResult>
我控制器(实际的查询结果是伪造的,因为在数据库中没有数据)
public class BooksController : Controller
{
public async Task<ActionResult> IndexAsync()
{
var books = this.documentSession.Query<Book>();
Book book = await books.FirstOrDefaultAsync() ??
new Book { Title = "Programming WCF service", ASIN = "B0043D2DUK" };
return this.View(book);
}
}
和视图IndexAsync.cshtml
@using Hydra.FubuConventions
@model Hydra.Models.Book
@{
ViewBag.Title = "Books Asynchronous";
}
<h2>Books Asynchronous</h2>
@Html.FormBlock(x => x.Title)
@Html.FormBlock(x => x.ASIN)
在Web.config
<configuration>
<appSettings>
<add key="webpages:Version" value="3.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
<system.web>
<customErrors mode="On" defaultRedirect="Error.html"/>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
</system.web>
</configuration>
当我使用同步控制器方法为模型提供数据时,它工作得很好。但与异步方法它只显示
System.Threading.Tasks.Task
1 System.Web.Mvc.ActionResult]`
我找到了很多在这里计算器职位,表明MVC的旧版本可能是问题的。但我检查了我的输出文件夹中的MVC dll(System.Web.Helpers v3.0.11001.0,System.Web.Mvc v5.0.11001.0和System.Web.WebPages v3.0.11001.0)的版本,似乎是正确的。
任何想法我失踪?
UPDATE
我比较加载的程序集的列表。除了仅在其中一个项目中加载的程序集明显不同之外,它们是匹配的。 web.config是相同的。我用与新项目中使用的相同的测试存根替换了对RavenDB的调用。仍然获取类型名称而不是视图。
您是否从早期的MVC版本迁移过项目?创建一个新项目并添加一个脚手架异步控制器,以确保异步控制器正常工作。如果他们不这样做,你会从开发环境中丢失软件包,但我怀疑它。您可能在'web中配置了错误的版本。config' – 2014-10-02 14:52:03
@PanagiotisKanavos空项目按预期工作...... – 2014-10-02 15:18:20
@SebastianWeber:既然你有一个解决方案可以工作,一个没有,那么它只能找到两者之间的区别。 – 2014-10-03 00:39:26