Измените ключ IdentityUser со строки на GUID — UserManager больше не работает.C#

Место общения программистов C#
Ответить
Anonymous
 Измените ключ IdentityUser со строки на GUID — UserManager больше не работает.

Сообщение Anonymous »

Недавно я решил перейти со строки на GUID в качестве уникального идентификатора для IdentityUser. Я успешно применил миграцию к базе данных, но теперь методы UserManager больше не работают. Поиск пользователя по электронной почте с помощью DbContext работает нормально (DataContext.Users.SingleAsync(...)), но возвращает значение NULL с помощью UserManager(UserManager.FindByIdAsync(...))
Пользователь приложения:
public class ApplicationUser : IdentityUser
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public override Guid Id { get; set; }
}

DbContext:
public class DataContext :
IdentityDbContext,
IDataContext
{
private readonly IUserContextAccessor _userContextAccessor;

public DataContext(DbContextOptions options, IUserContextAccessor userContextAccessor) : base(options)
{
_userContextAccessor = userContextAccessor;
}

protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
}
}

Служба профилей (я получаю ошибку внутри метода IsActiveAsync)
public class ProfileService : IProfileService
{
private readonly IUserClaimsPrincipalFactory _claimsFactory;
private readonly UserManager _userManager;

public ProfileService(
UserManager userManager,
IUserClaimsPrincipalFactory claimsFactory)
{
_userManager = userManager;
_claimsFactory = claimsFactory;
}

public async Task GetProfileDataAsync(ProfileDataRequestContext context)
{
...
}

public async Task IsActiveAsync(IsActiveContext context)
{
var sub = context.Subject.GetSubjectId();
var user = await _userManager.FindByIdAsync(sub);
context.IsActive = user != null;
}
}

И, наконец, я регистрирую это так:
services.AddIdentity(options =>
{
options.User.RequireUniqueEmail = true;
})
.AddEntityFrameworkStores()
.AddDefaultTokenProviders();


Подробнее здесь: https://stackoverflow.com/questions/787 ... nger-works
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»