【问题标题】:Generating Roles in Startup.cs doesn't work anymore in .NET Core 2.0在 Startup.cs 中生成角色在 .NET Core 2.0 中不再起作用
【发布时间】:2018-02-05 08:57:24
【问题描述】:
//Creates the admin ROLE
new RoleSeed(app.ApplicationServices.GetService<RoleManager<IdentityRole>>()).Seed().GetAwaiter().GetResult();
//Creates the admin ACCOUNT
new AccountSeed(app.ApplicationServices.GetService<UserManager<ApplicationUser>>()).Seed().GetAwaiter().GetResult();
//Adding ACCOUNT to ROLE
new AccToRoleSeed(app.ApplicationServices.GetService<UserManager<ApplicationUser>>(),
    app.ApplicationServices.GetService<ApplicationDbContext>()).Seed().GetAwaiter().GetResult();

这段代码会生成一个管理员角色、帐户,最后将该帐户添加到管理员角色中。 在我升级到 2.0.0 之前,这曾经可以工作

现在我收到此错误:

System.InvalidOperationException 发生 HResult=0x80131509
Message=无法解析范围服务 'Microsoft.AspNetCore.Identity.RoleManager`1[Microsoft.AspNetCore.Identity.IdentityRole]' 来自根提供商。

如何在这个版本中做到这一点?谢谢!

【问题讨论】:

标签: c# asp.net asp.net-core asp.net-core-2.0


【解决方案1】:

解决方案

新的 2.0 Program.cs 默认一行不包括这样做,但是,显式方式仍然有效:

public class Program
{
    public static void Main(string[] args)
    {
        var host = new WebHostBuilder()
          .UseKestrel()
          .UseContentRoot(Directory.GetCurrentDirectory())
          .UseIISIntegration()
          .UseStartup<Startup>()
          .Build();

        host.Run();
    }
}

此外,在创建之前不检查角色是否存在也不再被原谅:D

【讨论】:

    猜你喜欢
    • 2018-09-13
    • 1970-01-01
    • 2018-08-14
    • 2020-04-03
    • 1970-01-01
    • 2020-02-10
    • 2018-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多