Я создал систему идентификации, поместив свои сущности в базу данных (Code-First), создал EmployeeStore, который наследуется от IUserStore, однако всякий раз, когда мой метод OnPost пытается использовать метод NormalizedUserName в EmployeeStore, я всегда получаю ошибку трассировки в UserManager (проверьте ошибку ниже)
Произошло исключение: CLR / System.NullReferenceException Исключение типа 'System.NullReferenceException' произошло в Nextekk.dll, но не было обработано в коде пользователя: ' В экземпляре объекта не задана ссылка на объект.' в Nextekk.Models.EmployeeStore.SetNormalizedUserNameAsyn c (сотрудник сотрудника, строка NormalizedName, CancellationToken cancellationToken) в /home/Xxxxxx/Nxxxxxx/Models/EmployeeStore.cs:line 113 в Microsoft.Aspity.Dan.Ident. 81. MoveNext ()
Я даже пытался внедрить UserManager в конструктор EmployeeStore и вызвать его для непосредственного использования UserManager, который я действительно не хочу использовать в качестве опции, но все даром.
Мой метод NormalizedUserName выглядит следующим образом:
public Task SetNormalizedUserNameAsync(Employee employee, string normalizedName, CancellationToken cancellationToken)
{
cancellationToken.ThrowIfCancellationRequested();
if (employee == null)
{
throw new ArgumentNullException(nameof(employee));
}
if (normalizedName == null)
{
throw new ArgumentNullException(nameof(normalizedName));
}
// base.SetNormalizedUserNameAsync(Employee employee, string normalizedName, CancellationToken cancellationToken);
employee.NormalizedUserName = normalizedName;
// db.SaveChanges();
// return Task.CompletedTask;
return Task.FromResult<object>(null);
}
, и моя служба запуска Identity Service выглядит следующим образом:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<Models.NextekkDBContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("NDB")));
// Add identity
services.AddIdentity<Employee, Role>()
.AddUserStore<EmployeeStore>()
.AddRoleStore<RoleStore>()
.AddEntityFrameworkStores<NextekkDBContext>()
.AddDefaultTokenProviders()
.AddClaimsPrincipalFactory<EmployeeClaimsPrincipalFactory>();
services.AddScoped<EmployeeClaimsPrincipalFactory>();
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseAuthentication();
Пожалуйста, мой вопрос, как сделать мой CustomUserStore (EmployeeStore) работать со стандартным UserManager Microsoft Identity. Любая помощь приветствуется.