В. Net Core 2.2, пожалуйста, как я могу использовать пользовательский UserStore со значением по умолчанию. Net UserManager или я должен создать UserManager с нуля? - PullRequest
0 голосов
/ 17 февраля 2020

Я создал систему идентификации, поместив свои сущности в базу данных (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. Любая помощь приветствуется.

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