Я использую NET Core 3.1 + EntityFramework + PSQL. Попытка следовать учебникам и MSDN, но мой код не работает.
Вот мои startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
//params
};
});
services.AddIdentity<ApplicationUser, IdentityRole>()
.AddEntityFrameworkStores<MyContext>()
}
Вот мои MyContext.cs
public class MyContext : IdentityDbContext<ApplicationUser>
{
public DbSet<Flowers> Flowers { get; set; }
public DbSet<Post> Posts { get; set; }
public MyContext() : base()
{
Database.EnsureCreated();
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseNpgsql("Host=localhost...");
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
}
}
Вот мой ApplicationUser.cs
public class ApplicationUser : IdentityUser
{
public string SpecialNumber{ get; set; }
public ICollection<Flower> Flowers { get; set; }
}
Когда я пытаюсь запустить приложение, я получаю исключение System.AggregateException: «Некоторые службы не могут быть построенный '
Некоторые службы не могут быть построены (Ошибка при проверке дескриптора службы' ServiceType: Microsoft.AspNetCore.Identity.ISecurityStampValidator Срок службы: Ограниченный тип реализации: Microsoft.AspNetCore.Identity.SecurityStampValidator *23 * 9 [FlowersApp.Models.ApplicationUser, Microsoft.AspNetCore.Identity.IdentityRole, FlowersApp.Models.MyContext, System.String, Microsoft.AspNetCore.Identity.IdentityUserClaim 1[System.String],Microsoft.AspNetCore.Identity.IdentityUserRole
1 [System.String], Microsoft.AspNetCore.Identity. IdentityUserLogin 1[System.String],Microsoft.AspNetCore.Identity.IdentityUserToken
1 [System.String], Microsoft.AspNetCore.Identity.IdentityRoleClaim 1[System.String]]'.) (Error while validating the service descriptor 'ServiceType: Microsoft.AspNetCore.Identity.ITwoFactorSecurityStampValidator Lifetime: Scoped ImplementationType: Microsoft.AspNetCore.Identity.TwoFactorSecurityStampValidator
1 [FlowersApp.Models.ApplicationUser] ': невозможно разрешить службу для типа' FlowersApp.Models.MyContext ', так как ile пытается активировать 'Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore 9[FlowersApp.Models.ApplicationUser,Microsoft.AspNetCore.Identity.IdentityRole,FlowersApp.Models.MyContext,System.String,Microsoft.AspNetCore.Identity.IdentityUserClaim
1 [System.String], Microsoft.AspNetCore.Identity.IdentityUserRole 1[System.String],Microsoft.AspNetCore.Identity.IdentityUserLogin
1 [System.String], Microsoft.AspNetCore.Identity.IdentityUserToken * * 1 [System.String]].) (Ошибка при проверке дескриптора службы 'ServiceType: Microsoft.AspNetCore.Identity.IUserClaimsPrincipalFactory 1[FlowersApp.Models.ApplicationUser] Lifetime: Scoped ImplementationType: Microsoft.AspNetCore.Identity.UserClaimsPrincipalFactory
2 [FlowersApp.Models.ApplicationUser, Microsoft.AspNetCore.Identity.IdentityRole]': невозможно разрешить службу для типа 'FlowersApp.Models.MyContext' при попытке активировать 'Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore 9[FlowersApp.Models.ApplicationUser,Microsoft.AspNetCore.Identity.IdentityRole,FlowersApp.Models.MyContext,System.String,Microsoft.AspNetCore.Identity.IdentityUserClaim
1 [System.String], Microsoft.AspNetCore.Identity.IdentityUserRole 1[System.String],Microsoft.AspNetCore.Identity.IdentityUserLogin
1 [Система. String], Microsoft.AspNetCore.Identity.IdentityUserToken 1[System.String],Microsoft.AspNetCore.Identity.IdentityRoleClaim
1 [System.String]] '.) (Ошибка при проверке дескриптора службы' ServiceType: Microsoft.AspNetCore.Identity.UserManager 1[FlowersApp.Models.ApplicationUser] Lifetime: Scoped ImplementationType: Microsoft.AspNetCore.Identity.UserManager
1 [FlowersApp.Models.ApplicationUser ] ': Невозможно разрешить службу для типа' FlowersApp.Models.MyContext 'во время установки возможность активации 'Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore 9[FlowersApp.Models.ApplicationUser,Microsoft.AspNetCore.Identity.IdentityRole,FlowersApp.Models.MyContext,System.String,Microsoft.AspNetCore.Identity.IdentityUserClaim
1 [System.String], Microsoft.AspNetCore.Identity.IdentityUserRole 1[System.String],Microsoft.AspNetCore.Identity.IdentityUserLogin
1 [System.String], Microsoft.AspNetCore.Identity.IdentityUserToken * 1037 1 [System.String]].) (Ошибка при проверке дескриптора службы 'ServiceType: Microsoft.AspNetCore.Identity.SignInManager 1[FlowersApp.Models.ApplicationUser] Lifetime: Scoped ImplementationType: Microsoft.AspNetCore.Identity.SignInManager
1 [FlowersApp.Models.ApplicationUser]': невозможно разрешить службу для типа 'FlowersApp.Models .MyContext »при попытке активировать« Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore 9[FlowersApp.Models.ApplicationUser,Microsoft.AspNetCore.Identity.IdentityRole,FlowersApp.Models.MyContext,System.String,Microsoft.AspNetCore.Identity.IdentityUserClaim
1 [System.String], Microsoft.AspNetCore.Identity.IdentityUserRole 1[System.String],Microsoft.AspNetCore.Identity.IdentityUserLogin
1 [System.String], Microsoft.AspNetCore.Identity. IdentityUserToken 1[System.String],Microsoft.AspNetCore.Identity.IdentityRoleClaim
1 [System.String]] '.) (Ошибка при проверке дескриптора службы' ServiceType: Microsoft.AspNetCore.Identity.RoleManager 1[Microsoft.AspNetCore.Identity.IdentityRole] Lifetime: Scoped ImplementationType: Microsoft.AspNetCore.Identity.RoleManager
1 [Microsoft.AspNetCore.Identity.IdentityRole] ': невозможно разрешить службу для типа 'FlowersApp.Models.MyContext' при попытке активировать 'Microsoft.AspNetCore.Identity.Enti tyFrameworkCore.RoleStore 5[Microsoft.AspNetCore.Identity.IdentityRole,FlowersApp.Models.MyContext,System.String,Microsoft.AspNetCore.Identity.IdentityUserRole
1 [System.String], Microsoft.AspNetCore.Identity.IdentityRoleClaim 1[System.String]]'.) (Error while validating the service descriptor 'ServiceType: Microsoft.AspNetCore.Identity.IUserStore
1 [FlowersApp.Models.ApplicationUser] Время жизни: объем реализации: тип: Microsoft.AspNetCore.Identity *EntityFraSwork. System.String], Microsoft.AspNetCore.Identity.IdentityUserRole 1[System.String],Microsoft.AspNetCore.Identity.IdentityUserLogin
1 [System.String], Microsoft.AspNetCore.Identity.IdentityUserToken 1[System.String],Microsoft.AspNetCore.Identity.IdentityRoleClaim
1 [System.String]] ': невозможно разрешить службу для типа' FlowersApp. Models.MyContext 'при попытке активировать' Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore 9[FlowersApp.Models.ApplicationUser,Microsoft.AspNetCore.Identity.IdentityRole,FlowersApp.Models.MyContext,System.String,Microsoft.AspNetCore.Identity.IdentityUserClaim
1 [System.String], Microsoft.AspNetCore.Identity.IdentityUserRole 1[System.String],Microsoft.AspNetCore.Identity.IdentityUserLogin
1 [System.String], Microsoft.AspNetCore.Identity .IdentityUserToken 1[System.String],Microsoft.AspNetCore.Identity.IdentityRoleClaim
1 [System.String]] '.) (Ошибка при проверке дескриптора службы' ServiceType: Microsoft.AspNetCore.Identity.IRoleStore 1[Microsoft.AspNetCore.Identity.IdentityRole] Lifetime: Scoped ImplementationType: Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore
5 [Microsoft.AspNetCore. Identity.IdentityRole, FlowersApp.Models.MyContext, System.String, Microsoft.AspNetCore.Identity.IdentityUserRole 1[System.String],Microsoft.AspNetCore.Identity.IdentityRoleClaim
1 [System.String]] ': невозможно разрешить службу для типа' FlowersApp.Models.MyContext 'при попытке активации 'Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore 5[Microsoft.AspNetCore.Identity.IdentityRole,FlowersApp.Models.MyContext,System.String,Microsoft.AspNetCore.Identity.IdentityUserRole
1 [System.String], Microsoft.AspNetCore.Identity.IdentityRoleClaim`1 [System.String]].)
Не удается найти причину этой ошибки. Мои предложения унаследованы правильно?
Приложение запускается, когда я удаляю эту часть кода из Startup.cs
services.AddIdentity<ApplicationUser, IdentityRole>()
.AddEntityFrameworkStores<MyContext>()