2015-05-11 3 views
0

Я пытаюсь понять, почему Umbraco 7.2.4 просто не обрабатывает асинхронные задачи в моем ASP Контроллер .NET MVC. Я чувствую, что я прочитал почти все возможные переполнения стека и umbraco q & a и попробовал множество возможных методов, чтобы сузить проблему. Это как для Umbraco 7 & MVC 4 и & MVC 5. Он отлично работает в проекте MVC без Umbraco.Async Controller Возвращает «System.Threading.Tasks.Task`1 [System.Web.Mvc.ActionResult]»

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> 

В конце браузер не показывает рендеринга, но и просто текстовая строка:

системы. Threading.Tasks.Task`1 [System.Web.Mvc.ActionResult]

+1

См. Этот вопрос в другом месте на http://www.stackoverflow.com/questions/23006976/async-controller-action-with-umbraco-7-returns-string – ProNotion

+0

Привет @ProNotion, спасибо за это, я пробовал оба решения в этом вопросе по нескольким проектам (MVC4, MVC5) до этого не повезло. Я добавлю комментарий на их вопрос. Ура! – legas

+0

.... Также я попытался с SurfaceController (как в http://stackoverflow.com/questions/23006976/async-controller-action-with-umbraco-7-returns-string), а также с моим RenderMvcController. (дополнительная информация, которая может быть полезна) – legas

ответ

0

У вас есть этот ключ в файле web.config? Если нет, добавьте его, а затем попробуйте.

<appSettings> 
    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" /> 
    </appSettings> 
+0

Я добавил, не повезло :(- спасибо за ответ! – legas

0

Я задал вопрос с Umbraco по этому вопросу, поскольку я долгое время боролся с этим. Я написал an article on a solution here, но в двух словах вы можете использовать вместо этого:

public async Task<ActionResult> Home(RenderModel model) 
{ 
    var menuModel = new HomeViewModel(model); 
    await Task.Delay(1000); 
    return View("Home", menuModel); 
} 

Разница в том, что Home действия имеет приоритет над неисправным действием индекса, как он направляется от имени шаблона не типа документа псевдонима.

Смежные вопросы