AddToRoleAsync抛出奇怪的SQL错误
问题描述:
在我的ASP.NET MVC 1.1核心应用程序,该AddToRoleAsync
调用下面的代码的最后一行抛出错误:The COMMIT TRANSACTION request has no corresponding BEGIN TRANSACTION.
这是一种奇怪的,因为我没有任何在SQL Server或其他地方运行的其他事务。我一般都知道这个T-SQL错误。但我不清楚为什么下面的AddToRoleAsync
调用抛出这个错误。请注意,下面的代码在下一行代码中抛出错误之前成功创建了一个用户。AddToRoleAsync抛出奇怪的SQL错误
List<String> usersList = GetAllUsers();
foreach (string s in usersList)
{
var user = new ApplicationUser { UserName = s, UserRole = "TestRole" };
var result = await _userManager.CreateAsync(user, "testpassword");
if (result.Succeeded)
{
var result_1 = await _userManager.AddToRoleAsync(user, "TestRole");
}
}
答
当使用.Net Core应用程序时,Microsoft更改了[AspNetRoles]
等的结构。现在,当您向[AspNetRoles]
添加新的角色声明时,您应该声明角色NormalizedName
。 例如:
var role = "Manager";
var newRole = new IdentityRole()
{
Name = role,
NormalizedName = role.ToUpper() // Mandatory.
};
//! Adding the new Role into database and saving
await _apiDbContext.Roles.AddAsync(newRole);
await _apiDbContext.SaveChangesAsync();
的NormalizedName作用变量设置为大写,将让你使用:AddToRoleAsync
没有任何异样ERRS。
var currentUser = await _userManager.FindByEmailAsync(user.Email);
await _userManager.AddToRoleAsync(currentUser, "Manager");
_userManager属于
UserManager<YourIdentityUser>
你有没有想出解决办法?我正在经历同样的事情。有趣的是,我只在Azure部署中遇到这个错误 - 我的本地开发环境中没有出现错误。 – ih303
@ ih303如果我在关闭并重新启动项目后正确记得它开始工作。 – nam