【发布时间】:2016-12-14 11:09:24
【问题描述】:
我在成功创建用户后尝试将用户添加到角色。
public async Task<IActionResult> Register(RegisterViewModel model, string returnUrl = null)
{
ViewData["ReturnUrl"] = returnUrl;
if (!ModelState.IsValid) return View(model);
var user = new ApplicationUser
{
UserName = model.PhoneNumber,
PhoneNumber = model.PhoneNumber,
NationalId = model.NationalId,
FullName = model.FullName
};
var result = await _userManager.CreateAsync(user, model.NationalId);
if (result.Succeeded)
{
var res = await _userManager.AddToRoleAsync(user, "Admin");
await _signInManager.SignInAsync(user, false);
_logger.LogInformation(3, "Applicant created a new account with password.");
return RedirectToLocal(returnUrl);
}
AddErrors(result);
// If we got this far, something failed, redisplay form
return View(model);
}
但是,我得到了这个错误。
处理请求时发生未处理的异常。
InvalidOperationException:角色 ADMIN 不存在。
更新: 我打电话给
var myrole = await _roleManager.FindByNameAsync("Admin");
它返回null。但是当我检查时
var roles = _roleManager.Roles
我获得了包括“管理员”在内的所有角色
【问题讨论】:
-
在添加用户之前您是否“创建”了
IdentityRole? -
当然,角色是在种子方法中创建的,我验证它存在于数据库中
标签: c# asp.net-core