Сервис типа UserIdentity не зарегистрирован - PullRequest
0 голосов
/ 02 марта 2020

У меня есть веб-приложение, в которое я хочу интегрировать ASP. NET Core Identity, но после добавления контроллеров и представлений и редактирования _Layout.cs html я получаю эту ошибку:

InvalidOperationException: Ни один сервис для типа 'Microsoft.AspNetCore.Identity.SignInManager`1 [Strik eNet .EntityFramework.Entities.UserIdentity]' не зарегистрирован.

Когда я ищу эту ошибку в Google или здесь, я только получите решение переименовать все экземпляры IdentityUser в имя, которое я дал, будучи UserIdentity. Кроме того, многие решения говорят, что я должен найти его в файле _LoginPartial.cs html.

Проблема в том, что в моем решении нет файла с именем _LoginPartial.cs html, и когда я использую его инструмент поиска ctrl + F и поиск IdentityUser Я также не получаю результатов.

Есть идеи о том, что может быть оставшейся проблемой?

Ответы [ 2 ]

0 голосов
/ 03 марта 2020

Проблема в том, что в моем решении нет файла с именем _LoginPartial.cs html

Я бы предложил вам создать ядро ​​asp. net. приложение с шаблоном идентификации: создайте ASP. NET Базовое веб-приложение -> Изменить аутентификацию -> выберите Индивидуальные учетные записи пользователей. После того, как Visual Studio поможет создать приложение с включенной идентификацией, вы можете проверить dbcontext, страницы и файл запуска, чтобы найти разницу с существующим приложением. После копирования отсутствующих файлов вы можете создать свой пользовательский объект, наследующий от IdentityUser:

public class UserIdentity: IdentityUser
{
}

Изменить ApplicationDbContext:

public class ApplicationDbContext : IdentityDbContext<UserIdentity>
{
}

Изменить запуск:

services.AddDbContext<ApplicationDbContext>(options =>
            options.UseSqlServer(
                Configuration.GetConnectionString("DefaultConnection")));
services.AddDefaultIdentity<UserIdentity>(options => options.SignIn.RequireConfirmedAccount = true)
            .AddEntityFrameworkStores<ApplicationDbContext>();

И обновите _LoginPartial:

@inject SignInManager<UserIdentity> SignInManager
@inject UserManager<UserIdentity> UserManager

Вы также можете обратиться к этой статье для получения более подробной информации.

0 голосов
/ 02 марта 2020

Я думаю, вы забыли добавить Identity в конфигурацию Startup.cs:

services.AddIdentity<User, Role>(); // if you have roles
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...