C# 基于角色的授权标识API-注册不起作用

C# 基于角色的授权标识API-注册不起作用,c#,asp.net-core,authorization,asp.net-identity,C#,Asp.net Core,Authorization,Asp.net Identity,我一直在关注一段Youtube视频: 使用identity API为我的asp.net核心web应用创建基于角色的用户。该角色已成功创建并存储在我的数据库中,但我在尝试注册用户时出错 错误是: 处理请求时发生未处理的异常。ArgumentNullException:值不能为null。参数名称:items Microsoft.AspNetCore.Mvc.Rendering.MultiSelectList..ctor(IEnumerable items、string dataValueField、

我一直在关注一段Youtube视频: 使用identity API为我的asp.net核心web应用创建基于角色的用户。该角色已成功创建并存储在我的数据库中,但我在尝试注册用户时出错

错误是: 处理请求时发生未处理的异常。ArgumentNullException:值不能为null。参数名称:items Microsoft.AspNetCore.Mvc.Rendering.MultiSelectList..ctor(IEnumerable items、string dataValueField、string dataTextField、IEnumerable selectedValues、string dataGroupField)

我有一个公共的github存储库以及自述文件中的完整错误。

我是学习ASP的新手,如果有人能向我解释为什么其中一个列表字段为空,我将不胜感激

多谢各位

错误是:处理请求时发生未处理的异常。ArgumentNullException:值不能为null。参数名称:items Microsoft.AspNetCore.Mvc.Rendering.MultiSelectList..ctor(IEnumerable items、string dataValueField、string dataTextField、IEnumerable selectedValues、string dataGroupField)

这是因为您没有在post处理程序中将数据设置为selectlist

添加以下代码:

public async Task<IActionResult> OnPostAsync(string returnUrl = null)
{
    returnUrl = returnUrl ?? Url.Content("~/");
    ExternalLogins = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList();
    var role = _roleManager.FindByIdAsync(Input.Name).Result;
    if (ModelState.IsValid)
    {
        //...

        foreach (var error in result.Errors)
        {
            ModelState.AddModelError(string.Empty, error.Description);
        }
    }

    ViewData["roles"] = _roleManager.Roles.ToList();

    return Page();
}
PostAsync上的公共异步任务(字符串returnUrl=null) { returnUrl=returnUrl??Url.Content(“~/”); ExternalLogins=(wait _signInManager.GetExternalAuthenticationSchemesAsync()).ToList(); var role=\u rolemager.FindByIdAsync(Input.Name).Result; if(ModelState.IsValid) { //... foreach(result.Errors中的变量错误) { AddModelError(string.Empty,error.Description); } } ViewData[“角色”]=\u roleManager.roles.ToList(); 返回页(); }
我无法使用您的github存储库再现您的问题。我在导航栏中单击该角色,并创建名为
admin
的角色。然后单击
注册
,该角色包含在dropdownlist中。从错误消息中,您似乎没有成功创建角色。当我使用导航栏中登录名旁边的链接注册用户时,会发生错误。该角色在注册时显示在下拉列表中,但如果我提交,则会发生错误。可能是我没有正确保存角色。错误可能存在于“Data/Migrations/00000000000000\u CreateIdentitySchema.cs”中(不要相信我的话)。谢谢你看了!哦,我发现了问题。似乎您没有使用有效的名称或密码注册,它将返回Page(),但您没有在post处理程序中设置selectlist。只需添加
ViewData[“roles”]=\u roleManager.roles.ToList()返回前页()。感谢您解决此问题!它奏效了,我成功地注册了。