Assíncrona e aguarda no controlador MVC 4

Toda vez que tento usar o novoAsync eAwait operadores e retornar uma coleção de objetos de um banco de dados eu recebo umInvalid Operation exceção. Quando eu usá-lo para retornar apenas um único item, ele funciona bem.

Código do Controlador:

public async Task<ActionResult> EnvironmentList()
{
    EfEnvironmentDataAccess dataAccess = new EfEnvironmentDataAccess();
    ICollection<Environment> environments = await dataAccess.GetAllEnvironmentsAsync();
    return PartialView(environments);
}

Ver código:

<div class="ECURightCol">
<h3>Table Dumps</h3>
@Html.Action("EnvironmentList", "Environment")
@Html.Action("ComputerList", "Computer")
@Html.Action("ProductList", "Product")
@Html.Action("InstanceList", "Instance")
@Html.Action("ProfileList", "Profile")

O Código de Acesso a Dados:

public ICollection<Environment> GetAllEnvironments()
{
    using (EcuWebDataContext db = new EcuWebDataContext())
    {
        return db.Environments.OrderBy(e => e.Name).ToList();
    }
}

public async Task<ICollection<Environment>> GetAllEnvironmentsAsync()
{
    return await Task.Run(() => GetAllEnvironments());
}

O erro que recebo é:

Descrição: ocorreu uma exceção não tratada durante a execução da solicitação da web atual. Revise o rastreamento de pilha para obter mais informações sobre o erro e onde ele foi originado no código.

Detalhes da exceção: System.InvalidOperationException: HttpServerUtility.Execute bloqueado enquanto aguarda a conclusão de uma operação assíncrona.

questionAnswers(2)

yourAnswerToTheQuestion