Вопрос по async-await, asp.net-mvc-4, c# – asp.net mvc 4 асинхронный контроллер висит ни на одном из методов TaskAsync

1

Я использую Visual Studio 2011 Beta с 4.5 Beta. Кажется, есть ошибка в ASP.Net MVC 4, когда метод возвращает значение none & quot; TaskAsync & quot; задача, висит запрос.

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 зависает, когда метод возвращается. Я могу отлаживать код без ошибок.

Кто-нибудь знает решение / обходной путь для этого?

когда вы говорите, что он отлаживается без ошибок, попадает ли точка останова в строке Content () для Test2? Если да, то поможет ли добавить доход, как связанный поток SO? James Manning
& Lt; & код GT; Task.Yield () & л; / код & GT; не помогло. user896993
это может быть связано:stackoverflow.com/questions/9977309/… James Manning
Да, строка Content () получает удар, и метод фактически завершается. Он застревает после возврата метода в движок MVC. user896993

Ваш Ответ

1   ответ
4

Известная проблема с MVC 4 Beta.

Короче говоря, добавьте следующее в ~ / Web.config:

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

Затем добавьтеawait Task.Yield(); как первая строка в вашем методе действия. (Не забывайтеawait!)

Error: User Rate Limit Exceeded user896993
Error: User Rate Limit Exceeded

Похожие вопросы