首页 > 解决方案 > 无法在 Blazor 服务器端使用 RoleManager 创建角色

问题描述

我有一些代码使用从 MVC 项目中复制的 RoleManager 来在 Blazor 项目中创建角色。它可以编译,但是当我单步执行代码时,它会到达该行,然后似乎抛出异常,因为它永远不会进入下一行。我无法捕捉到异常。

由于我的代码不起作用,我在网络上找到了代码并且它的行为相同,所以我改变了它的注入方式,我得到了一个不同的错误,所以我找到了第三种方法,这也达到了测试是否有角色已经存在并爆炸。

这是最新的尝试

  [Inject]
    IServiceProvider services {get;set;}
    public async Task Initialize()
    {
        using (var roleManager = services.GetRequiredService<RoleManager<IdentityRole>>())
        {
            string proRole = "Pro";
           
            if (!await roleManager.RoleExistsAsync(proRole))
            {
                var temp = await roleManager.CreateAsync(new IdentityRole { Name = proRole });
            }
            
        }
    }

它在等待的 if 语句上爆炸了。

这是以前的代码应该可以正常工作。

 string proRole = "Pro";
                string proClientRole = "ProClient";
                if (!await _roleManager.RoleExistsAsync(proRole))
                {
                    var temp = await _roleManager.CreateAsync(new IdentityRole { Name = proRole });
                }

这是一个方法的内部。

我还在 Razor 文件中将它作为 @{code 使用,经过一个小时的尝试不同的东西后,我将它移到了一个基类,因为它们在过去更稳定。

这不是数据库连接,因为这是经过充分验证的,还因为 UserManager 在同一个类中被调用并且它可以工作

我还尝试了这段代码(Blazor Role Management Add Role trough UI (Crud))这两个建议。

对我来说,这对 Blazor 来说是一件坏事,它是越野车,我永远不知道这是我的坏事,还是最新最伟大的东西出了问题。但我假设在这种情况下这是我的坏事。

无论如何,任何帮助将不胜感激,我在这方面的时间太多了,

标签: rolesblazor-server-side

解决方案


我将相同的代码复制/粘贴到“/”页面,它在那里工作。由于某种原因,它在加载到组件中的组件中不起作用,但标准角色代码在“/”页面中按预期工作。很可能我应该重新启动计算机,因为它现在也可以在原始位置工作。


推荐阅读