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>>();