异步操作方法返回一个不能同步执行的Task

时间:2013-02-21 04:03:36

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

此代码在我的本地计算机上正常运行

public async Task<ActionResult> teststuff()
    {

        using (var client = new HttpClient())
        {

            var twitter = await client.GetStringAsync("http://www.twitter.com");
            Response.Write(twitter);
        }

        return View();
    }

但是,当我上传到服务器时,我收到错误回复

  '/'应用程序中的服务器错误。      

异步操作方法'teststuff'返回一个Task   无法同步执行。描述:未处理   在执行当前Web请求期间发生异常。   请查看堆栈跟踪以获取有关错误的更多信息   它起源于代码。

     

异常详细信息:System.InvalidOperationException:异步   action方法'teststuff'返回一个无法执行的Task   同步。

     

来源错误:

     

执行期间生成了未处理的异常   当前的网络请求。有关的来源和位置的信息   可以使用下面的异常堆栈跟踪来识别异常。

     

堆栈追踪:

     

[InvalidOperationException:异步操作方法'teststuff'   返回一个无法同步执行的任务。]   System.Web.Mvc.Async.TaskAsyncActionDescriptor.Execute(ControllerContext   controllerContext,IDictionary 2 parameters) +125
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary
2   参数)+39
  System.Web.Mvc&LT;&GT; c__DisplayClass13.b__10()   +120 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter)   filter,ActionExecutingContext preContext,Func 1 continuation) +637
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList
1个过滤器,ActionDescriptor actionDescriptor,   IDictionary`2参数)+307
  System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext   controllerContext,String actionName)+688
  NotFoundMvc.ActionInvokerWrapper.InvokeActionWith404Catch(ControllerContext   controllerContext,String actionName)+54
  NotFoundMvc.ActionInvokerWrapper.InvokeAction(ControllerContext   controllerContext,String actionName)+19
  System.Web.Mvc。&lt;&gt; c__DisplayClass1d.b__19()+40
  System.Web.Mvc.Async。&lt;&gt; c__DisplayClass1.b__0()+15
  System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult)+53   System.Web.Mvc.Async&LT;&GT; c__DisplayClass4.b__3(IAsyncResult的   ar)+15
  System.Web.Mvc&LT;&GT; c__DisplayClass8.b__3(IAsyncResult的   asyncResult)+42
  System.Web.Mvc.Async&LT;&GT; c__DisplayClass4.b__3(IAsyncResult的   ar)+15
  System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()   +606 System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean&amp; completedSynchronously)+288

     

----------------------------------------------- ---------------------------------版本信息:Microsoft .NET Framework版本:4.0.30319;   ASP.NET版本:4.0.30319.17929

我的服务器上缺少一些东西,但却无法找到它的任何帮助。

我尝试在服务器上重新安装.net framework 4.5,但是没有效果。但是我确实注意到它有两个

Microsoft .NET Framework 4多目标打包和 Microsoft .NET Framework 4.5多目标包

不确定我是否应该删除4个?

由于

1 个答案:

答案 0 :(得分:1)

在子类化ControllerActionInvoker之后,为了使用Ninject将依赖项注入MVC​​属性,我遇到了这个错误。此页面描述了执行此操作的过程:http://codeclimber.net.nz/archive/2009/02/10/how-to-use-ninject-to-inject-dependencies-into-asp.net-mvc.aspx

我的控制器中有一些异步方法,当调用这些异步方法时出现此错误。事实证明,我不需要继承ControllerActionInvoker,而是System.Web.Mvc.Async.AsyncControllerActionInvoker

更改基类后,我的代码很高兴,运行得很好。