У меня есть asp.net mvc async метод, ожидающий 10 секунд.
Проблема в том, что IIS Express (также производственный IIS) останавливает обработку входящих запросов до тех пор, пока не завершится этот асинхронный метод.
Я думал, что ключевое слово await освобождает текущий поток для нового входящего запроса. Но, похоже, я что-то упустил.
public async Task<ActionResult> AsyncMethod()
{
using (DeliveryPortalEntities context = new DeliveryPortalEntities())
{
await context.Database.ExecuteSqlCommandAsync("WAITFOR DELAY '00:00:10'");
}
return Json(new { status = "ok" });
}
Обновление! Может кто-нибудь объяснить, почему во время выполнения этого кода IIS немедленно прекращает отвечать на запросы.
public async Task<ActionResult> AsyncMethod()
{
await Task.Delay(10000).ConfigureAwait(false);
return new EmptyResult();
}