确认用户的角色已经正确添加到了AspNetUserRoles表中,可以使用SQL Server Management Studio或者任意一个SQL查询窗口进行确认。
确认配置文件中的角色名字是否与代码中的一致,主要关注Startup.cs文件中的Authorization服务配置、UserManager中的RoleManager服务配置和Controller中的AuthorizeAttribute特性配置。
在代码中添加下面的语句进行调试,查看具体错误信息:
var isRoleExists = await _roleManager.RoleExistsAsync(roleName);
if (!isRoleExists)
{
//角色不存在
}
确认是否使用了AuthorizeAttribute的Policy属性进行授权,有可能是设定的策略没有被正确的设置和应用。
尝试在 Nuget 包管理器控制台中升级或更新 Microsoft.AspNet.Identity.Core 包。
如果以上方法均无效,建议检查是否存在异步等待操作混乱,或者在ASP.Net Core 7中存在的新特性中发生冲突。在这种情况下,建议参考文档或者微软技术社区上的解决方案。