MVC异步错误 - 异步操作方法'Complete'不能同步执行

MVC异步错误 - 异步操作方法'Complete'不能同步执行

问题描述:

我在VS 2010中使用了MVC4。我有一个异步操作,我尝试工作。我的控制器从AsyncController继承,我有〜异步和〜完成的方法。我能够在示例测试项目中正确执行我的异步操作。但是,当我运行它作为我的核心web应用程序的一部分,它让这个异常MVC异步错误 - 异步操作方法'Complete'不能同步执行

[InvalidOperationException异常:异步操作方法“完全”不能同步执行] System.Web.Mvc.Async.AsyncActionDescriptor.Execute(ControllerContext控制器上下文,IDictionary 2 parameters) +133 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary 2个参数)+39

我使用Unity的依赖注入,ActionAttributeFilters和MVCSiteMapProvider,我想知道如果其中之一是导致上述问题。任何帮助表示赞赏。

感谢

整个堆栈跟踪

[InvalidOperationException: The asynchronous action method 'Complete' cannot be executed synchronously.] 
System.Web.Mvc.Async.AsyncActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +133 
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +39 
System.Web.Mvc.<>c__DisplayClass13.<InvokeActionMethodWithFilters>b__10() +129 
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) +978122 
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList`1 filters, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +314 
System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +978400 
NotFoundMvc.ActionInvokerWrapper.InvokeActionWith404Catch(ControllerContext controllerContext, String actionName) in c:\Users\Andrew Davey\projects\opensource\NotFoundMvc\src\NotFoundMvc\ActionInvokerWrapper.cs:40 
NotFoundMvc.ActionInvokerWrapper.InvokeAction(ControllerContext controllerContext, String actionName) in c:\Users\Andrew Davey\projects\opensource\NotFoundMvc\src\NotFoundMvc\ActionInvokerWrapper.cs:21 
System.Web.Mvc.<>c__DisplayClass1d.<BeginExecuteCore>b__19() +40 
System.Web.Mvc.Async.<>c__DisplayClass1.<MakeVoidDelegate>b__0() +20 
System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +67 
System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +20 
System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +53 
System.Web.Mvc.<>c__DisplayClass8.<BeginProcessRequest>b__3(IAsyncResult asyncResult) +42 
System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +20 
System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +53 
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +469 
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +375 

它看起来像NotFoundMVC库导致这个问题。卸载这个软件包,你会得到很好的工作!

+0

是的,那是问题所在。感谢您指出了这一点! – Joy 2013-03-24 15:56:14

+0

它以什么方式导致问题? – 2014-04-02 17:20:00

+0

最新版本的NotFoundMVC支持异步 – 2017-05-08 12:43:23