![](/img/trans.png)
[英]No service for type 'Microsoft.AspNetCore.Identity.UserManager`1[Microsoft.AspNetCore.Identity.IdentityUser]' has been registered
[英]No service for type 'Microsoft.AspNet.Identity.UserManager' has been registered
我在 Asp.Net Core 5 上。當我嘗試為數據庫播種時,出現以下錯誤:
"No service for type 'Microsoft.AspNet.Identity.UserManager`1[Microsoft.AspNet.Identity.EntityFramework.IdentityUser]' has been registered."
從我在其他帖子和線程中讀到的內容看來,如果我有一個自定義用戶並且沒有在 program.cs 中獲得正確的 UserManager,那么似乎會發生這種情況,但這里情況並非如此。 經過數小時搜索此錯誤后,我真的迷路了...
我的Startup.cs配置服務
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<AppDbContext>(options => options.UseSqlServer(Configuration["DefaultConnection"]));
services.AddIdentity<IdentityUser, IdentityRole>(options =>
{
//Password settings
options.Password.RequireDigit = true;
options.Password.RequireNonAlphanumeric = true;
options.Password.RequireUppercase = true;
options.Password.RequiredLength = 10;
options.Password.RequiredUniqueChars = 0;
//Lockout settings
options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(1);
options.Lockout.MaxFailedAccessAttempts = 3;
options.Lockout.AllowedForNewUsers = true;
//User settings
options.User.AllowedUserNameCharacters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._+";
options.User.RequireUniqueEmail = true;
//Sign in settings
options.SignIn.RequireConfirmedEmail = true;
options.SignIn.RequireConfirmedPhoneNumber = false;
})
.AddEntityFrameworkStores<AppDbContext>()
.AddDefaultTokenProviders();
}
Startup.cs配置
app.UseAuthentication();
Program.cs主要function:
public static void Main(string[] args)
{
var host = CreateHostBuilder(args).Build();
try
{
var scope = host.Services.CreateScope();
var ctx = scope.ServiceProvider.GetRequiredService<AppDbContext>();
var userMgr = scope.ServiceProvider.GetRequiredService<UserManager<IdentityUser>>();
var roleMgr = scope.ServiceProvider.GetRequiredService<RoleManager<IdentityRole>>();
ctx.Database.EnsureCreated();
var adminRole = new IdentityRole("Admin");
if (!ctx.Roles.Any())
{
roleMgr.CreateAsync(adminRole).GetAwaiter().GetResult();
}
if (!ctx.Users.Any(u => u.UserName == "admin"))
{
var adminUser = new IdentityUser
{
UserName = "admin",
Email = "admin@admin.com",
};
userMgr.CreateAsync(adminUser, "Passw0rd!!").GetAwaiter().GetResult();
userMgr.AddToRoleAsync(adminUser.Id, adminRole.Name).GetAwaiter().GetResult();
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
host.Run();
}
在嘗試執行評論中建議的步驟時,我注意到我同時使用了 ASP Net Identity 和 ASP Net Core Identity ...我一直通過核心修復,所以沒有沖突
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.