我正在试图弄清楚为什么Umbraco 7.2.4似乎没有处理我的ASP.NET MVC控制器中的异步任务。我觉得我已经阅读了几乎所有可能的堆栈溢出和umbraco q& a,并尝试了许多可能的方法来尝试缩小问题范围。对于Umbraco 7& MVC 4和& MVC 5.它在没有Umbraco的MVC项目中工作正常。
HomeController.cs:
using System.Threading.Tasks;
using System.Web.Mvc;
using Umbraco.Web.Models;
using Umbraco.Web.Mvc;
namespace Umbraco.Async.Website.Controllers
{
public class HomeController : RenderMvcController
{
public new async Task<ActionResult> Index(RenderModel model)
{
var menuModel = new HomeViewModel(model);
await Task.Delay(1000);
return View("Home", menuModel);
}
}
public class HomeViewModel : RenderModel
{
public string Test = "Pizza is awesome!!!!";
public HomeViewModel(RenderModel model)
: base(model.Content, model.CurrentCulture)
{
}
}
}
Home.cshtml:
@*@inherits Umbraco.Web.Mvc.UmbracoTemplatePage*@
@inherits UmbracoViewPage<Umbraco.Async.Website.Controllers.HomeViewModel>
@{
Layout = null;
}
<h1>@Model.Test</h1>
最后,浏览器不显示任何渲染视图,只显示文本字符串:
System.Threading.Tasks.Task`1 [System.Web.Mvc.ActionResult]
答案 0 :(得分:0)
你的web.config文件中有这个键吗?如果没有,请添加它,然后尝试。
<appSettings>
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
</appSettings>
答案 1 :(得分:0)
我已经向Umbraco提出了这个问题的问题,因为我已经挣扎了很长一段时间。我写了an article on a solution here,但简而言之,你可以用它代替:
Home
区别在于TAG
操作优先于失败的Index操作,因为它是从模板名称而不是文档类型别名路由的。