MVC5覆盖CreateAsync并传递错误

时间:2016-05-06 20:05:01

标签: c# asp.net-mvc-5 entity-framework-6 asp.net-identity

我正在尝试验证在创建新帐户之前数据库中是否存在少量自定义字段。为了证明我的问题,我将使用电子邮件。这是我的代码:

public override Task<IdentityResult> CreateAsync(User user, string password)
{
    if (Users.Any(u => u.Email.Equals(user.Email, StringComparison.InvariantCultureIgnoreCase)))
    {
        var identityResult = new IdentityResult(new []{"Email exists"});
        return identityResult;
    }
    return base.CreateAsync(user, password);
}

所以概念很简单,如果电子邮件已经存在,则不允许用户创建帐户。我试图将我的验证逻辑从控制器转移到服务中。所以控制器会这样调用它:

var result = await _userService.CreateAsync(user, model.Password);

然后根据结果做不同的事情。

上面的代码不起作用,如何返回错误?

Cannot convert expression type 'IdentityResult' to return type Task<IdentityResult>

编辑:我需要在我的CreateAsync方法中添加异步字并等待基础,所以它应该是:

public override async Task<IdentityResult> CreateAsync(User user, string password)
{
    if (Users.Any(u => u.Email.Equals(user.Email, StringComparison.InvariantCultureIgnoreCase)))
    {
        var identityResult = new IdentityResult(new []{"Email exists"});
        return identityResult;
    }
    return await base.CreateAsync(user, password);
}

0 个答案:

没有答案