FindByIdAsync返回null用户对象,dotnet core 2.0



我使用FindByIdAsync(FindbyIdeMailasync,FindbyNameSync也在这种特定情况下也不起作用)。FindbyIdasync返回null。

IdentityController.cs

public class IdentityController : Controller
{
    private readonly UserManager<ApplicationUser> userManager;
    private readonly IIdentityService identity;
    private readonly RoleManager<IdentityRole> roleManager;
    public IdentityController(UserManager<ApplicationUser> userManager,
                              IIdentityService identity,
                              RoleManager<IdentityRole> roleManager)
    {
        this.userManager = userManager;
        this.identity = identity;
        this.roleManager = roleManager;
    }

    public async Task<IActionResult> Roles(string id)
    {
        var user = await this.userManager.FindByIdAsync(id);
        var u = this.userManager.GetUserId(User);
        if (user == null)
        {
            return NotFound();
        }      
     ....

用户在数据库中:数据库中的用户和用户ID被传递给控制器操作:调试器

已经尝试使用新的标准VS2017 ASP.NET Core MVC模板进行了某种操场

谢谢

根据您的图像,您的id字符串包裹在{}符号中,但这不是数据库中的字符串。我还注意到,您从GetUserId获得的价值没有包裹在牙套中。从id解析牙套,或使用u的值,或将正确的值传递给Roles

ex:

public async Task<IActionResult> Roles(string id)
{
    if (id.Length > 0 && id[0] == '{')
       id = id.Substring(1, id.Length - 2);
    var user = await this.userManager.FindByIdAsync(id);
    var u = this.userManager.GetUserId(User);
    if (user == null)
    {
        return NotFound();
    }      
 ....

相关内容

  • 没有找到相关文章