C# 获取与具体用户相关的用户角色

C# 获取与具体用户相关的用户角色,c#,asp.net-web-api,asp.net-core,asp.net-identity,asp.net-core-2.1,C#,Asp.net Web Api,Asp.net Core,Asp.net Identity,Asp.net Core 2.1,如何将任务解包到列表或其他内容?我正在寻找一种方法来获得用户角色一个用户只有一个角色,但从这个查询我得到任务列表,我无法从中获得该角色。如何处理 我的问题是: var appUser = this.userManager.Users.SingleOrDefault(r => r.UserName == model.UserName); var appUserRoles = this.userManager.GetRolesAsync(appUser); //Here i get List

如何将任务解包到列表或其他内容?我正在寻找一种方法来获得用户角色一个用户只有一个角色,但从这个查询我得到任务列表,我无法从中获得该角色。如何处理

我的问题是:

var appUser = this.userManager.Users.SingleOrDefault(r => r.UserName == model.UserName);
var appUserRoles = this.userManager.GetRolesAsync(appUser); //Here i get List of task
和完整方法

[HttpPost("Login")]
    public async Task<object> Login([FromBody] LoginBindingModel model)
    {
        var result = await this.signInManager.PasswordSignInAsync(model.UserName, model.Password, false, false);

        if (result.Succeeded)
        {
            var appUser = this.userManager.Users.SingleOrDefault(r => r.UserName == model.UserName);
            var appUserRoles = this.userManager.GetRolesAsync(appUser);

            var bearerToken = await this.GenerateJwtToken(model.UserName, appUser);

            return this.Ok(new AccountViewModel
            {
                //model
            });
        }

        return this.Unauthorized();
    }
或者有没有办法让登录不异步?Byt在Identity Core中有多种方法。

您可以使用Wait:

在调用所有用Task修饰的方法之前放置一个wait,为此,您可以使用如下方法:

 var userRoles =await this.userManager.GetRolesAsync(appUser);
这将返回列表中的所有角色,也可以使用结果,如:

现在您有了一个角色列表,您可以枚举它们并选择所需的角色

var role=userRoles.Where(r=>r.name=='admin') ; // example

尝试此变量appUserRoles=\u userManager.GetRolesAsyncappUser.Result.ToList,获取此任务的结果值如果它是异步的,请使用Wait。
var userRoles =this.userManager.GetRolesAsync(appUser).Result;
var role=userRoles.Where(r=>r.name=='admin') ; // example