Подтвердить что ты не робот

Нет службы для типа "Microsoft.AspNetCore.Identity.SignInManager Когда

Я получаю

InvalidOperationException: нет службы для типа "Microsoft.AspNetCore.Identity.SignInManager 1 [Authorization.IdentityModels.ApplicationUser] 'зарегистрирован.

когда я запускаю свой веб-сайт ApsCore MVC.

это сегменты моего кода:

ConfigureServices:

services.AddDbContext<ApplicationDbContext>(options =>
                        options.UseNpgsql(configuration["Data:DefaultConnection:ConnectionString"]));



services.AddIdentity<ApplicationUser, IdentityRole<Guid>>()
                    .AddEntityFrameworkStores<ApplicationDbContext, Guid>()
                    .AddDefaultTokenProviders();

Настройка:

app.UseIdentity();

ApplicationDbContext.cs

public class ApplicationDbContext : IdentityDbContext<ApplicationUser, IdentityRole<Guid>, Guid> 

ApplicationUser.cs

 public class ApplicationUser : IdentityUser<Guid>

Я буду очень рад, если вы сможете мне помочь.

4b9b3361

Ответ 1

Столкнулся с той же проблемой после перемещения моих классов Identity в Guid и нашел решение здесь:

Возможно, вам потребуется изменить частичное представление входа в систему, чтобы использовать новый тип пользователя IdentityUser

В Views/Shared/_LoginPartial.cshtml я просто изменил

@using Microsoft.AspNetCore.Identity
@inject SignInManager<IdentityUser> SignInManager
@inject UserManager<IdentityUser> UserManager

к

@using Microsoft.AspNetCore.Identity
@inject SignInManager<MyUser> SignInManager
@inject UserManager<MyUser> UserManager

и это сработало для меня.

Ответ 2

Не уверен, если вы все еще видите эту проблему, но здесь некоторая помощь для всех, кто сталкивается с этим. (Обратите внимание, что специфика относится к версии 1, но необходимость в том, чтобы внедренная зависимость была недоступна, остается той же.)

Проблема исходит от какого-то класса в вашем приложении, требующего SignInManager в своем конструкторе, но в настройке внедрения зависимостей нет связанной с ним реализации.

Чтобы исправить это, в своем классе запуска в методе ConfigureServices зарегистрируйте класс SignInManager в службах. Например: services.AddScoped<SignInManager<ApplicationUser>, SignInManager<ApplicationUser>>();

Метод расширения AddIdentity, возможно, был обновлен, так как исходный вопрос был задан для добавления этого, но тот же тип ошибки будет отображаться для всего, что не может разрешить контейнер IoC.

Ответ 3

также может потребоваться обновить _ManageNavcshtml для отображения сведений об учетной записи

@using WebApplication1.Data @inject SignInManager SignInManager