У меня есть приложение, написанное с использованием C # вверху на Asp.Net Core 2.2.Приложение было написано поверх Core 2.1, но затем обновлено до Asp.net Core 2.2.
Теперь я решил изменить тип Id
модели User
со строки на целое.
Чтобы переопределить тип string / default, я создал класс User
вот так
public class User : IdentityUser<int>
{
}
Затем я создал класс Role
вот так
public class Role : IdentityRole<int>
{
}
Наконец, я обновил класс ApplicationDbContext
примерно так
public class ApplicationDbContext : IdentityDbContext<User, Role, int>
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
}
Затем я удалил все таблицы базы данных, которые начинаются с AspNet
и таблицу _Migrations.
Теперь, каждый раз, когда я запускаю свое приложение, я получаю следующую ошибку
InvalidOperationException: Нет службыдля типа «Microsoft.AspNetCore.Identity.UserManager`1 [Microsoft.AspNetCore.Identity.IdentityUser]» зарегистрирован.
Вот мой класс Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
services.AddDefaultIdentity<User>().AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
services.AddAuthentication()
.AddFacebook(facebookOptions =>
{
facebookOptions.AppId = Configuration["Authentication:Facebook:AppId"];
facebookOptions.AppSecret = Configuration["Authentication:Facebook:AppSecret"];
});
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}
Я также пытался сделать так, чтобы следующий код в моем файле Startsup
services.AddScoped<UserManager<User>>();
Вот скриншот трассировки стека