Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 添加.AddSignInManager时遇到ASP.NET核心/问题<;签名管理员<;AppUser>&燃气轮机;(); 在创业班_C#_Entity Framework_Asp.net Core_Asp.net Identity - Fatal编程技术网

C# 添加.AddSignInManager时遇到ASP.NET核心/问题<;签名管理员<;AppUser>&燃气轮机;(); 在创业班

C# 添加.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]时出错)“:在尝试

尝试在项目中添加第一次迁移时遇到的问题:

访问Microsoft.Extensions.Hosting服务时出错。在没有应用程序服务提供商的情况下继续。错误:无法构造某些服务(验证服务描述符的服务类型:Microsoft.AspNetCore.Identity.ISecurityStampValidator生存期:作用域实现类型:Microsoft.AspNetCore.Identity.SecurityStampValidator
1[API.Entities.AppUser]时出错)“:在尝试激活“Microsoft.AspNetCore.Identity.SecurityStampValidator”时,无法解析类型为“Microsoft.AspNetCore.Authentication.ISystemClock”的服务。
1[API.Entities.AppUser].”(验证服务描述符的ServiceType:Microsoft.AspNetCore.Identity.ITwoFactorSecurityStampValidator生存期:作用域实现类型:Microsoft.AspNetCore.Identity.TwoFactorSecurityStampValidator
1[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>>();