ASP.NET Identity 2 UserManager使所有用户都异步

时间:2014-10-14 09:48:36

标签: c# asp.net-mvc-5 asp.net-identity-2

有人可以告诉你是否有办法让所有用户在ASP.NET Identity 2中异步?

UserManager.Users中没有任何异步或找到所有异步或同样的somwething

2 个答案:

答案 0 :(得分:26)

无法直接与UserManager类异步执行此操作。您可以将它包装在您自己的异步方法中:(这可能有点邪恶)

public async Task<IQueryable<User>> GetUsersAsync
{
    return await Task.Run(() =>
    {
        return userManager.Users(); 
    }
}

或使用ToListAsync扩展方法:

public async Task<List<User>> GetUsersAsync()
{
    using (var context = new YourContext())
    {
        return await UserManager.Users.ToListAsync();
    }
}

或直接使用您的上下文:

public async Task<List<User>> GetUsersAsync()
{
    using (var context = new YourContext())
    {
        return await context.Users.ToListAsync();
    }
}

答案 1 :(得分:0)

要扩展.NET Core 2.1的DavidG's答案,您将需要使用IdentityUser而不是User,而且您将必须直接使用上下文。

public async Task<List<IdentityUser>> GetUsersAsync()
{
    using (var context = new ApplicationDbContext())
    {
        return await context.Users.ToListAsync();
    }
}