UserManager.FindByEmailAsync
returns null
, but the user exists in the database.
The code below explain the strange problem:
var email = info.Principal.FindFirstValue(ClaimTypes.Email);
var test = new Data.ApplicationDbContext().Users.First(x => x.NormalizedEmail == email);
var usermail = await _userManager.FindByEmailAsync(email);
Console.WriteLine(test == null); //false
Console.WriteLine(usermail == null); //true
EDIT
Also via _userManager
itself, the desired user is obtained:
var test = _userManager.Users.FirstOrDefault(x => x.NormalizedEmail == email);
var usermail = await _userManager.FindByEmailAsync(email);
Console.WriteLine(test == null); //false
Console.WriteLine(usermail == null); //true
It should be noted that the user was not created in a "conventional" manner, but by Data-Seed (in OnModelCreating
):
protected override void OnModelCreating(ModelBuilder builder)
{
var users = new (string email, string name)[] {
("xyz@gmail.com", "admin")
};
var appUsers = users.Select(x => new ApplicationUser
{
Email = x.email,
NormalizedEmail = x.email,
NormalizedUserName = x.email,
UserName = x.email,
EmailConfirmed = true,
Id = Guid.NewGuid().ToString(),
SecurityStamp = Guid.NewGuid().ToString()
}).ToArray();
var role = new IdentityRole("Admins") { Id = Guid.NewGuid().ToString() };
var roleToUser = appUsers.Select(x => new IdentityUserRole<string> { RoleId = role.Id, UserId = x.Id });
builder.Entity<ApplicationUser>().HasData(appUsers);
builder.Entity<IdentityRole>().HasData(role);
builder.Entity<IdentityUserRole<string>>().HasData(roleToUser);
base.OnModelCreating(builder);
}