UserManager.FindByNameAsync 在 ASP.NET Core 中为现有用户返回 null

问题描述 投票:0回答:1

我在 ASP.NET Core 应用程序中遇到 UserManager.FindByNameAsync 问题,即使用户存在于数据库中,它也会返回 null。我尝试根据用户名检索用户角色,但该方法无法找到用户。

public async Task<string> GetUserRolesByUserId(string userName)
{
    var user = await _userManager.FindByNameAsync(userName);
    
    if (user == null)
    {
        return "";
    }

    var roles = await _userManager.GetRolesAsync(user);
    return string.Join(",", roles);
}

预期行为: 该方法应该找到用户“TonyMontana”并返回他们的角色。

实际行为: FindByNameAsync 为用户“TonyMontana”返回 null,即使数据库中存在该用户且具有完全相同的用户名。

附加信息:

我已确认数据库中存在用户“TonyMontana”。 数据库中的用户名与传递给 FindByNameAsync 的用户名的大小写匹配。 UserManager 实例在 Startup.cs 中配置。 我不确定为什么 FindByNameAsync 无法找到用户。这是区分大小写的问题,还是我的应用程序中 UserManager 的配置或使用方式可能存在问题?

任何见解或建议将不胜感激!

c# asp.net-core entity-framework-core identity
1个回答
0
投票

尝试确保数据库中 AspNetUsers 表中的

NormalizedUserName
列具有值:
TONYMONTANA
。如果
NormalizedUserName
列为 NULL,这意味着找不到它,则 UserManager.FindByNameAsync 返回 null 。

结果:

© www.soinside.com 2019 - 2024. All rights reserved.