C# 添加.AddSignInManager时遇到ASP.NET核心/问题<;签名管理员<;AppUser>&燃气轮机;(); 在创业班
尝试在项目中添加第一次迁移时遇到的问题: 访问Microsoft.Extensions.Hosting服务时出错。在没有应用程序服务提供商的情况下继续。错误:无法构造某些服务(验证服务描述符的服务类型:Microsoft.AspNetCore.Identity.ISecurityStampValidator生存期:作用域实现类型:Microsoft.AspNetCore.Identity.SecurityStampValidatorC# 添加.AddSignInManager时遇到ASP.NET核心/问题<;签名管理员<;AppUser>&燃气轮机;(); 在创业班,c#,entity-framework,asp.net-core,asp.net-identity,C#,Entity Framework,Asp.net Core,Asp.net Identity,尝试在项目中添加第一次迁移时遇到的问题: 访问Microsoft.Extensions.Hosting服务时出错。在没有应用程序服务提供商的情况下继续。错误:无法构造某些服务(验证服务描述符的服务类型:Microsoft.AspNetCore.Identity.ISecurityStampValidator生存期:作用域实现类型:Microsoft.AspNetCore.Identity.SecurityStampValidator1[API.Entities.AppUser]时出错)“:在尝试
1[API.Entities.AppUser]时出错)“:在尝试激活“Microsoft.AspNetCore.Identity.SecurityStampValidator”时,无法解析类型为“Microsoft.AspNetCore.Authentication.ISystemClock”的服务。
1[API.Entities.AppUser].”(验证服务描述符的ServiceType:Microsoft.AspNetCore.Identity.ITwoFactorSecurityStampValidator生存期:作用域实现类型:Microsoft.AspNetCore.Identity.TwoFactorSecurityStampValidator1[API.Entities.AppUser]时出错)“:在尝试激活“Microsoft.AspNetCore.Identity.TwoFactorSecurityStampValidator”时,无法解析类型为“Microsoft.AspNetCore.Authentication.ISystemClock”的服务。”
无法创建“DataContext”类型的对象。有关设计时支持的不同模式,请参阅
继承了IdentityDbContext的类:
public class DataContext : IdentityDbContext<AppUser, AppRole, int,
IdentityUserClaim<int>,AppUserRole, IdentityUserLogin<int>,
IdentityRoleClaim<int>, IdentityUserToken<int>>
{
public DataContext(DbContextOptions<DataContext> options) : base(options)
{
}
DbSet<CVUser> UserWithCV { get; set; }
//Fluent API - used to overwrite the EF Core conventions
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
}
公共类DataContext:IdentityDbContext
{
公共数据上下文(DbContextOptions):基本(选项)
{
}
DbSet UserWithCV{get;set;}
//Fluent API-用于覆盖EF核心约定
模型创建时受保护的覆盖无效(ModelBuilder ModelBuilder)
{
基于模型创建(modelBuilder);
}
然后是AppUser,它继承了IdentityUser
启动类:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<DataContext>(options =>
{
options.UseSqlite(_config.GetConnectionString("DefaultConnection"));
});
services.AddControllers();
//Setting up the Identity API
services.AddIdentityCore<AppUser>
(options =>
options.Password.RequireNonAlphanumeric = false
)
.AddRoles<AppRole>()
.AddRoleManager<RoleManager<AppRole>>()
.AddRoleValidator<RoleValidator<AppRole>>()
.AddEntityFrameworkStores<DataContext>()
.AddSignInManager<SignInManager<AppUser>>(); // - here is the problem
}
public void配置服务(IServiceCollection服务)
{
services.AddDbContext(选项=>
{
options.UseSqlite(_config.GetConnectionString(“DefaultConnection”);
});
services.AddControllers();
//设置标识API
服务.附加数据中心
(选项=>
options.Password.RequireNonAlphanumeric=false
)
.AddRoles()
.AddRoleManager()
.AddRoleValidator()
.AddEntityFrameworkStores()
.AddSignInManager();/-问题出在这里
}
.AddSignInManager();
在尝试向项目添加新迁移时,这一行导致了我的问题。知道原因吗?
我唯一的解决方案是删除以下所有内容:(我猜默认情况下Identity会正确创建它们)
(如果我删除AddSignInManager,我可以创建迁移)
.AddRoles()
.AddRoleManager()
.AddRoleValidator()
.AddSignInManager();
您觉得怎么样?谢谢。似乎我错过了服务。AddAuthentication()。
感谢您的帮助@MartinCostello看起来您缺少了服务。AddAuthentication()
?@MartinCostello谢谢。就这样。我不敢相信这么简单,但还是要谢谢您。
.AddSignInManager<SignInManager<AppUser>>();
.AddRoles<AppRole>()
.AddRoleManager<RoleManager<AppRole>>()
.AddRoleValidator<RoleValidator<AppRole>>()
.AddSignInManager<SignInManager<AppUser>>();