我试图让accountController自动为每个新注册的用户分配角色,因此我最终做了这样的事情:
public async Task<IActionResult> Register(RegisterViewModel model, string returnUrl = null)
{
if (ModelState.IsValid)
{
var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
var result = await _userManager.CreateAsync(user, model.Password);
//there is where the error is being raised.
await _userManager.AddToRoleAsync(user, "testRole");
if (result.Succeeded)
{
//here goes some code
//have also adding this line of code inside this if stmt
//await _userManager.AddToRoleAsync(user, "testRole");
}
AddErrors(result);
}
return View(model);
}
我在Stackoverflow上推荐了其他帖子,但是,我一直存在此错误:InvalidOperationException:不存在角色测试。
microsoft.aspnetcore.Identity.entityFrameworkcore.userstore d__34.movenext() system.runtime.exceptionservices.exceptiondispatchinfo.throw() system.runtime.compilerservices.taskawaiter.handlenonsuccessanddebuggernotification(任务 任务) Microsoft.aspnetcore.Identity.usermanager d__104.movenext() system.runtime.exceptionservices.exceptiondispatchinfo.throw() system.runtime.compilerservices.taskawaiter.handlenonsuccessanddebuggernotification(任务 任务)system.runtime.compilerServices.taskawaiter.getResult() webapplication2.controllers.accountcontroller d__17.movenext() 在accountcontroller.cs
中
注意:
- 我在项目上使用PostgreSQL,所以我创建了一个新项目使用MSSQL并遇到相同的错误。
- 我已经确保测试环在表中。因此,这也没有问题!
因此,Testrole是确切的名称,然后将其标准化为Testrole如何创建测试机?我之所以这样说,是因为身份寻找标准化版本。例外很明显,在这种情况下它不存在。基本上,如果您不使用Rolemanager,那么创建角色
的方式出了问题创建角色的另一种方法是使用您的数据库上下文并以这种方式添加新角色,但是如果您不为归一化名称字段输入使用CAPS,那么这是您将获得的错误