簡體   English   中英

沒有注冊類型“Microsoft.AspNet.Identity.UserManager”的服務

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM