asp.net标识 - SetPasswordHashAsync

时间:2015-05-12 18:32:32

标签: c# asp.net asynchronous asp.net-identity

我正在尝试配置身份以使用自定义提供程序。到目前为止一切都很好,我创建了UserStore

public class UserStore : IUserStore<User>, IUserPasswordStore<User>

(已实施所有方法)和UserManager:

public UserManager(IUserStore<User> userStore)
        : base(userStore)
    { }

和User是我的自定义实体,用于容纳用户。

问题在于UserStore我有以下内容:

public async Task SetPasswordHashAsync(User user, string passwordHash)

根据我的理解,这是在创建用户之前调用的,所以我应该在这里做的是:

public Task SetPasswordHashAsync(User user, string passwordHash)
{
    user.PasswordHash = passwordHash;
}

...但是这必须返回一个Task,我在这里看不到异步。

  1. 为什么返回类型是SetPasswordHashAsync的任务而不仅仅是空白?
  2. 我应该如何实施SetPasswordHashAsync
  3. 我知道我可以做类似

    的事情
    public async Task SetPasswordHashAsync(User user, string passwordHash)
    {
        user.PasswordHash = passwordHash;
        await Task.FromResult(0);
    }
    

    ......但是这不同步吗?看到用async任务修饰的所有其他方法并使用await并且这一个返回Task.FromResult()

    是很奇怪的

    任何?

1 个答案:

答案 0 :(得分:9)

任务不必是异步的。您可以按如下方式实现它:

public Task SetPasswordHashAsync(User user, string passwordHash)
{
    user.PasswordHash = passwordHash;
    return Task.FromResult(0);
}