Внимательно просматривая сообщение об ошибке, вы, кажется, упускаете возможность добавить ограничение для TUser
, которое вынуждает его наследовать от IdentityUser<string>
.Это унаследованное ограничение от Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser>
.
Добавление этого ограничения в ваш пользовательский магазин выглядит примерно так:
public class MyCustomUserStore<TUser> : Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser>, IUserLdapStore<TUser>
where TUser : IdentityUser<string>, new()
{
//constructor goes here....
public Task<string> GetDistinguishedNameAsync(TUser user)
{
return Task.FromResult(string.Empty);
}
}
Спасибо @KirkLarkin за указание второй ошибки, которую я полностью пропустил.
Не указан аргумент, который соответствует необходимому формальному параметру 'context' для 'UserStore.UserStore (DbContext, IdentityErrorDescriber)'
Ошибка немного загадочная,но это легко решаемо, если мы предоставим конструктор для пользовательского хранилища, предоставив параметры для базового класса:
public MyCustomUserStore(DbContext context, IdentityErrorDescriber describer = null) : base(context, describer)
{
}
Собрав все это вместе, класс должен выглядеть следующим образом:
public class MyCustomUserStore<TUser> : Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<TUser>, IUserLdapStore<TUser>
where TUser : IdentityUser<string>, new()
{
public MyCustomUserStore(DbContext context, IdentityErrorDescriber describer = null) : base(context, describer)
{
}
public Task<string> GetDistinguishedNameAsync(TUser user)
{
return Task.FromResult(string.Empty);
}
}
Надеюсь, это поможет!