Не удалось разрешить службу для ISystemClock при попытке активировать SecurityStampValidator - PullRequest
1 голос
/ 11 октября 2019

Я пытаюсь добавить Identity в мой веб-API, но получаю эту ошибку

InvalidOperationException: невозможно разрешить службу для типа> 'Microsoft.AspNetCore.Authentication.ISystemClock' при попытке активировать> 'Microsoft.AspNetCore.Identity.SecurityStampValidator`1 [WebAPI.Models.User>] '.

после добавления идентификатора в Startup.cs, где у меня есть

services.AddIdentityCore<User>(options => { });
            new IdentityBuilder(typeof(User), typeof(IdentityRole), services)
                .AddRoleManager<RoleManager<IdentityRole>>()
                .AddSignInManager<SignInManager<User>>()
                .AddEntityFrameworkStores<DataContext>();

app.UseAuthentication();

класс usermodel пуст. Все загружается в базу данных. Чего не хватает? Я ценю ваше время и помощь.

1 Ответ

1 голос
/ 11 октября 2019

ISystemClock обычно регистрируется в вызове AddAuthentication. Вы можете увидеть это в источниках здесь.

Или вместо этого вы можете позвонить AddDefaultIdentity, что, в свою очередь, вызывает AddAuthentication. Источники здесь.

Рекомендуется использовать один из этих механизмов вместо AddIdentityCore. Однако, если вам по какой-то причине нужно позвонить AddIdentityCore, то вы можете зарегистрировать часы самостоятельно:

services.TryAddSingleton<ISystemClock, SystemClock>();

Хотя вы можете также столкнуться с другими вещами, чтобы зарегистрировать, что вышеупомянутые методы заботятсяиз. См. Также этот вопрос и ответ на него .

Что касается того, что это такое - интерфейс ISystemClock предназначен для получения текущего времени. Реализация SystemClock получает реальное время с компьютера (просто вызывая DateTimeOffset.UtcNow). Однако при тестировании это позволяет реализации «поддельных часов» передавать различные значения текущего времени, проверяя сценарии, такие как високосные дни и другую временную бизнес-логику. Такой шаблон часто называют «виртуальными часами» или «издеваются над часами».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...