MVC4错误“异步操作方法无法同步执行”

时间:2013-09-25 18:05:10

标签: asp.net-mvc asp.net-mvc-4

我们在ASP.NET MVC3中有现有的工作代码。我们正在尝试升级到MVC4,但是一个动作方法调用正在抛出异常:

  

异步操作方法'Get'不能同步执行

我知道其他人遇到过类似的问题,因为我看过像MVC Async error - The asynchronous action method 'Complete' cannot be executed synchronously这样的帖子。

当我们的动作调用程序代码调用异步动作时,会发生错误。我将尝试简化代码,它看起来像:

String actionName = "Get";
AsyncControllerActionInvoker asyncInvoker = new AsyncControllerActionInvoker();
asyncInvoker.InvokeAction(controllerContext, actionName);

并且异步方法位于从AsyncController派生的控制器中,定义为:

[Url("methodname/{type?}"), HttpGet]
public void GetAsync()

[NonAction]
public Output GetCompleted(Output output, Exception ex)

因此,当AsyncControllerActionInvoker.InvokeAction尝试在从AsyncController派生的控制器上调用异步方法时,它会失败。我应该调用AsyncControllerActionInvoker.BeginInvokeAction()吗?为什么这在MVC 3中有效并在MVC 4中失败?

我知道MVC 4改进了异步控制器的处理。 Here是一篇很棒的文章。但AsyncController仍然存在,其评论说:“提供向后兼容ASP.NET MVC 3”。所以,我希望我可以让我的旧代码继续工作。

0 个答案:

没有答案