2017-04-20 55 views
1

aynchronous控制器我有一个CSHTML控制器大致以下逻辑:嵌入完全成熟的视图+在asp.net CSHTML视图

public class MyController 
{ 
    public async Task<ActionResult> Index(string query){ 
     // do something with query and put result in 'myModel' 
     return View(await myModel.ToListAsync()); 
    } 
} 

这工作完全当我直接调用的动作。

现在我想的仪表板,其中要求该控制器操作3次,每次用不同的查询参数,大约是这样的:

@Html.Action("Index", "myControllerName", new { query = "foo" }) 
@Html.Action("Index", "myControllerName", new { query = "bar" }) 
@Html.Action("Index", "myControllerName", new { query = "baz" }) 

的代码抛出在第一@Html线异常虽然:

类型的异常“System.Web.HttpException”发生在 System.Web.dll中,但在用户代码

加成没有处理al信息:[翻译:执行时出错]处理程序 'System.Web.Mvc.HttpHandlerUtil + ServerExecuteHttpHandlerAsyncWrapper'。

基于此问题Error executing child request for handler in view我建立的第二方法返回的局部视图,并且我检查是否有一个[HTTPGET]删除(有没有)。两者都不起作用。

编辑建立一个局部视图,这是不是异步,做工作的基础上,继续压在异常后和谷歌搜索的错误,并发现了这个问题:Async PartialView causes "HttpServerUtility.Execute blocked..." exception。不开心与同步的解决方案,虽然,仍然可行的解决方案

+0

你是否从局部视图调用这些操作? – Kramb

+0

不,从“常规”视图 –

回答

1

工作正如你已经发现,异步孩子动作不ASP.NET MVC支持异步5.行动的支持在ASP.NET介绍核心MVC 6.

您可以在AyncPumpthis article您的行动中执行异步代码,但操作方法必须仍然是同步的。

+0

完整的信息+潜在解决方案非常感谢 –