identityserver4的项目升级成.netcore3.1后出现:Microsoft.Extensions.Logging.ILogger`1[Microsoft.AspNetCore.Identity.UserManager`1[Services.IdentityServer4.ApplicationUser]]

把.net core2.1的identityServer4的项目升级成3.1后,出现如下错误:

System.InvalidOperationException: Unable to resolve service for type 'Microsoft.Extensions.Logging.ILogger`1[Microsoft.AspNetCore.Identity.UserManager`1[Services.IdentityServer4.ApplicationUser]]' while attempting to activate 'Microsoft.AspNetCore.Identity.UserManager`1[Services.IdentityServer4.ApplicationUser]'.

原来在core 2.1的时候不报错,升级为3.1后报错了。

报错的代码如下:

            string connectionString = SysCore.ConfigHelper.GetSectionValue("ConnectionStrings:DefaultConnection");
            var services = new ServiceCollection();
            services.AddDbContext<ApplicationDbContext>(options => options.UseMySql(connectionString));
            services.AddIdentity<ApplicationUser, IdentityRole>(
                    options =>
                    {
                        options.Password.RequireUppercase = false;
                        options.Password.RequireLowercase = false;
                        options.Password.RequireDigit = false;
                        options.Password.RequiredLength = 0;
                        options.Password.RequireNonAlphanumeric = false;
                        options.Password.RequiredUniqueChars = 0;
                    }
                )
                .AddEntityFrameworkStores<ApplicationDbContext>()
                .AddDefaultTokenProviders();

            var serviceProvider = services.BuildServiceProvider();

            var userMgr = serviceProvider.GetRequiredService<UserManager<ApplicationUser>>();

添加一行后解决:

            string connectionString = SysCore.ConfigHelper.GetSectionValue("ConnectionStrings:DefaultConnection");
            var services = new ServiceCollection();
            services.AddDbContext<ApplicationDbContext>(options => options.UseMySql(connectionString));
            services.AddLogging(logging => logging.AddConsole());
            services.AddIdentity<ApplicationUser, IdentityRole>(
                    options =>
                    {
                        options.Password.RequireUppercase = false;
                        options.Password.RequireLowercase = false;
                        options.Password.RequireDigit = false;
                        options.Password.RequiredLength = 0;
                        options.Password.RequireNonAlphanumeric = false;
                        options.Password.RequiredUniqueChars = 0;
                    }
                )
                .AddEntityFrameworkStores<ApplicationDbContext>()
                .AddDefaultTokenProviders();

            var serviceProvider = services.BuildServiceProvider();

            var userMgr = serviceProvider.GetRequiredService<UserManager<ApplicationUser>>();
原文地址:https://www.cnblogs.com/wjx-blog/p/13666906.html