我正在使用带有4.5 Beta的Visual Studio 2011 Beta。 ASP.Net MVC 4似乎存在一个错误,如果该方法返回无“TaskAsync”任务,它会挂起请求。
public class HomeController : Controller
{
//
// GET: /Home/
public async Task<ActionResult> Test1()
{
string s = await new WebClient().DownloadStringTaskAsync("http://google.com");
return Content("asdf");
}
public async Task<ActionResult> Test2()
{
string MyConString = ConfigurationManager.ConnectionStrings["Master"].ConnectionString;
MySqlConnection connection = new MySqlConnection(MyConString);
await connection.OpenAsync();
connection.Close();
return Content("asdf");
}
}
Test1工作正常。 一旦方法返回,Test2就会挂起。我能够通过代码进行调试而没有错误。
任何人都知道修复/解决方法吗?
答案 0 :(得分:4)
简而言之,将以下内容添加到〜/ Web.config:
<appSettings>
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
</appSettings>
然后添加await Task.Yield();
作为操作方法的第一行。 (别忘了等待!)