C# 无法解析类型为';Microsoft.AspNetCore.Identity.IRoleStore
我试图在我的ASP.NET核心MVC应用程序中植入UserRole,但它引发了以下异常 引发异常:Microsoft.Extensions.DependencyInjection.dll中的“System.InvalidOperationException” Microsoft.Extensions.DependencyInjection.dll中发生“System.InvalidOperationException”类型的异常,但未在用户代码中处理 尝试激活“Microsoft.AspNetCore.Identity.AspNetRoleManager1[Microsoft.AspNetCore.Identity.Identity.IdentityRole]”时,无法解析类型为“Microsoft.AspNetCore.Identity.IRoleStore]”的服务 添加服务C# 无法解析类型为';Microsoft.AspNetCore.Identity.IRoleStore,c#,asp.net-core,dependency-injection,asp.net-identity,C#,Asp.net Core,Dependency Injection,Asp.net Identity,我试图在我的ASP.NET核心MVC应用程序中植入UserRole,但它引发了以下异常 引发异常:Microsoft.Extensions.DependencyInjection.dll中的“System.InvalidOperationException” Microsoft.Extensions.DependencyInjection.dll中发生“System.InvalidOperationException”类型的异常,但未在用户代码中处理 尝试激活“Microsoft.AspNetC
services.AddDbContext(选项=>
option.UseSqlServer(
GetConnectionString(“DefaultConnection”);
服务.附加性(选项=>{});
种子
private void CreateRoles(IServiceProvider服务提供者)
{
var rolemager=serviceProvider.GetRequiredService();
var userManager=serviceProvider.GetRequiredService();
.................
.................
}
我正在Startup.cs的Configure()
中调用CreateRoles()
它在CreateRoles()
的第一行抛出上述异常。
异常是说这是DependencyInjection问题,我如何解决这个问题?看起来您打算将Entity Framework Core用于ASP.NET Core标识持久化,但您还没有完全设置好<默认情况下,code>IRoleStore等未注册,因为这是允许使用不同持久性机制的扩展点。要在此处使用EF core,只需添加对的调用,如下所示:
services.AddIdentity<AppUser, IdentityRole>()
.AddEntityFrameworkStores<AppDbContext>();
services.AddIdentity()
.AddEntityFrameworkStores();
如果不为DI创建作用域,我认为您会遇到此错误
假设您在程序.cs中播种
var host = CreateWebHostBuilder(args).Build();
try
{
var scope = host.Services.CreateScope(); <-- Need this
var roleMgr = scope.ServiceProvider.GetRequiredService<RoleManager<IdentityRole>>();
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
host.Run();
var host=CreateWebHostBuilder(args.Build();
尝试
{
var scope=host.Services.CreateScope();根据MSDN文档,最有效的方法是
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
services.AddDefaultIdentity<IdentityUser>().AddRoles<IdentityRole>() <--Here!!!
.AddEntityFrameworkStores<ApplicationDbContext>();
services.AddDbContext(选项=>
options.UseSqlServer(
GetConnectionString(“DefaultConnection”);
services.AddDefaultIdentity().AddRoles()
var host = CreateWebHostBuilder(args).Build();
try
{
var scope = host.Services.CreateScope(); <-- Need this
var roleMgr = scope.ServiceProvider.GetRequiredService<RoleManager<IdentityRole>>();
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
host.Run();
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
services.AddDefaultIdentity<IdentityUser>().AddRoles<IdentityRole>() <--Here!!!
.AddEntityFrameworkStores<ApplicationDbContext>();