ASP.NET Identity 2 UserManager получает всех пользователей async

Может кто-нибудь сказать, есть ли способ заставить всех пользователей асинхронизировать в ASP.NET Identity 2?

В UserManager.Users нет ничего асинхронного или найти все async или что-то вроде этого

Ответ 1

Невозможно сделать это асинхронно с классом 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();
    }
}

Ответ 2

Расширяя ответ DavidG для .NET Core 2.1, вам нужно будет использовать IdentityUser вместо User, а также вам придется напрямую использовать свой контекст.

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