如何从挂起停止Visual Studio 11 Beta异步操作方法

时间:2012-03-05 00:13:46

标签: visual-studio asynchronous visual-studio-2012

在Visual Studio 11开发人员预览版中,异步操作方法正常运行而没有问题。安装Visual Studio 11 Beta后,这些相同的异步操作方法现在会导致页面无限期挂起。

public class HomeController : AsyncController {
    public async Task<ActionResult> Index() {
        return View();
    }
}

将操作更改回同步,无需挂起即可正常工作。

public class HomeController : Controller {
    public ActionResult Index() {
        return View();
    }
}

这篇博客文章(http://blogs.msdn.com/b/pfxteam/archive/2012/03/03/10277166.aspx)让我觉得这个问题与测试版有关,但网站已经建成针对.NET Framework 4.5而不是4.0,所以可能它应该可行。

“这意味着虽然您绝对可以使用Visual Studio 11 Beta构建使用async / await与.NET 4.5的应用程序,但您目前无法使用Visual Studio 11 Beta构建对.NET使用async / await的应用程序4,Silverlight 5等,因为Visual Studio 11 Beta中的编译器期望形状不同于现有AsyncCtpLibrary * DLL中的类型。“

有关在何处寻找修复的任何建议?

1 个答案:

答案 0 :(得分:3)

来自Microsoft的

Stephen Troub随后提供了解决方法。你可以看到他的帖子here。总结:

  

.NET 4.5 Beta中的ASP.NET MVC中存在一个已知错误   在此问题中,异步方法同步完成。直到   修复是可用的,一个简单的解决方法是添加“await Task.Yield();”   作为异步方法的第一行,强制它完成   异步。为了使其正常工作,您还需要确保   您正在使用ASP.NET提供的新SynchronizationContext   .NET 4.5,这意味着确保您拥有以下行:

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

在配置文件的appSettings部分。