Асинхронизация и ожидание в контроллере MVC 4
Каждый раз, когда я пытаюсь использовать новыйAsync
а такжеAwait
операторы и вернуть коллекцию объектов из базы данных, я получаюInvalid Operation
исключение. Когда я использую его, чтобы вернуть только один элемент, он работает нормально.
Код контроллера:
public async Task EnvironmentList()
{
EfEnvironmentDataAccess dataAccess = new EfEnvironmentDataAccess();
ICollection environments = await dataAccess.GetAllEnvironmentsAsync();
return PartialView(environments);
}
Посмотреть код:
Table Dumps
@Html.Action("EnvironmentList", "Environment")
@Html.Action("ComputerList", "Computer")
@Html.Action("ProductList", "Product")
@Html.Action("InstanceList", "Instance")
@Html.Action("ProfileList", "Profile")
Код доступа к данным:
public ICollection GetAllEnvironments()
{
using (EcuWebDataContext db = new EcuWebDataContext())
{
return db.Environments.OrderBy(e => e.Name).ToList();
}
}
public async Task GetAllEnvironmentsAsync()
{
return await Task.Run(() => GetAllEnvironments());
}
Ошибка, которую я получаю:
Описание: во время выполнения текущего веб-запроса произошло необработанное исключение. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.
Сведения об исключении: System.InvalidOperationException: HttpServerUtility.Execute заблокирован во время ожидания завершения асинхронной операции.