我试图把我所有的数据在一个数据库,包括业务数据和身份数据。所以,我已经在我的数据库上运行迁移并更新了我的DbContext。
我正试图从Blazor Web Assembly中指定用户的新项目模板修改我的项目。
我运行应用程序,它加载主页。但是,当我单击Login时,我收到错误:
处理请求时发生未处理的异常。InvalidOperationException:没有类型的服务"Microsoft.AspNetCore.Identity.UserManager"1 (MyProject.Server.Models.ApplicationUser)"已注册
在我的MyProject。Server Startup.cs文件:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<MyContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddDatabaseDeveloperPageExceptionFilter();
services.AddDefaultIdentity<ApplicationUser>(options => options.SignIn.RequireConfirmedAccount = false)
.AddRoles<IdentityRole>()
.AddDefaultTokenProviders()
.AddUserManager<UserManager<ApplicationUser>>()
.AddSignInManager<SignInManager<ApplicationUser>>()
.AddEntityFrameworkStores<MyContext>();
services.AddIdentityServer(
options =>
{
options.Events.RaiseErrorEvents = true;
options.Events.RaiseInformationEvents = true;
options.Events.RaiseFailureEvents = true;
options.Events.RaiseSuccessEvents = true;
}
)
.AddClientStore<ClientStore>()
.AddConfigurationStore<MyContext>(options =>
{
options.ConfigureDbContext = b => b.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"));
})
.AddOperationalStore<MyContext>(options =>
{
options.ConfigureDbContext = b => b.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"));
})
.AddApiAuthorization<ApplicationUser, MyContext>();
services.AddAuthentication().AddIdentityServerJwt();
services.AddControllersWithViews();
services.AddRazorPages();
}
在我的ApplicationUser类中没有什么特别的:
public class ApplicationUser : IdentityUser
{
}
在my _LoginPartial.cshtml:
@using Microsoft.AspNetCore.Identity
@using MyProject.Server.Models
@inject SignInManager<ApplicationUser> SignInManager
@inject UserManager<ApplicationUser> UserManager
我没想过我要做什么特别的事。主要的是我使用了一个客户DbContext,它覆盖了OnModelCreating。这就是为什么我需要定义这么多的IdentityServer。
如果你使用的是。net core 5添加:
services.AddIdentityCore<ApplicationUser>();
根据源代码,这将注册UserManager<ApplicationUser>