【发布时间】:2020-12-06 05:35:34
【问题描述】:
我在 Blazor .net 3.1 中启动了一个应用程序,但遇到了问题。我想在启动应用程序时添加一个具有管理员角色(root)的用户。我正在使用 EF。添加用户有效,但添加角色会引发异常。
System.AggregateException : 'No service for type 'Microsoft.AspNetCore.Identity.RoleManager'1[Microsoft.AspNEtCore.Identity.IdentityRole]' has been registered.ontainer is destroyed)'
我尝试了不同的解决方案,例如ASP.NET Core Identity Add custom user roles on application startup、old post,但在 SQLite、SQL Server 上我仍然有同样的异常...
我创建了一个静态类,并在 Startup.cs 中调用了这个方法。
public static class RolesData
{
private static readonly string[] Roles = new string[] { "Admin", "Manager", "Member" };
public static async Task SeedRoles(IServiceProvider serviceProvider)
{
using (var serviceScope = serviceProvider.GetRequiredService<IServiceScopeFactory>().CreateScope())
{
var roleManager = serviceScope.ServiceProvider.GetRequiredService<RoleManager<IdentityRole>>();
foreach (var role in Roles)
{
if (!await roleManager.RoleExistsAsync(role))
{
await roleManager.CreateAsync(new IdentityRole(role));
}
}
}
}
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
...
RolesData.SeedRoles(app.ApplicationServices).Wait();
}
如果您有任何我感兴趣的建议,并且如果您知道一个解释身份验证的网站,我想了解!
感谢您的帮助
【问题讨论】:
-
分享您的 Statup ConfigureServices 方法
标签: c# asp.net-core blazor