如何调试此 "value cannot be null. Parameter name: password" 错误?

How to debug this "value cannot be null. Parameter name: password" error?

基本上,我正在尝试创建一个可以 add/remove 应用程序中的产品的管理员角色 (canEdit)。分析“IdentityResult Create”扩展方法我发现它有 +1 覆盖。

  1. 一个有参数:manager,TUser user
  2. 另一个有参数:manager,TUser用户,字符串密码

这是我在 Wingtip Toys Microsoft asp.net 教程即将结束时不断遇到的错误。在我的代码中,除了应用程序的名称(如您所见,我的是 gamestore)之外与教程相同的代码,我想我必须使用第二种方法,因为管理员角色有密码。

但我尝试了不同的方法并通过分析所有那些浅蓝色 类 和接口等的元数据扩展来理解和解决这个问题,但我根本无法解决这个问题.

编辑

我正在添加代码。下面的粗线是错误行。

namespace GameStore.Logic
{
    internal class RoleActions
    {
        internal void AddUserAndRole()
        {
            // Access the application context and create result 
            variables.
            Models.ApplicationDbContext context = new 
            ApplicationDbContext();
            IdentityResult IdRoleResult;
            IdentityResult IdUserResult;

            var roleStore = new RoleStore<IdentityRole>(context);
            var roleMgr = new RoleManager<IdentityRole>(roleStore);

            if (!roleMgr.RoleExists("canEdit"))
            {
                IdRoleResult = roleMgr.Create(new IdentityRole { Name = 
                "canEdit" });
            }
    
            var userMgr = new UserManager<ApplicationUser>(new 
                   UserStore<ApplicationUser>(context));
            var appUser = new ApplicationUser
            {
                UserName = "canEditUser@gamestore.com",
                Email = "canEditUser@gamestore.com",
            };
            **IdUserResult = userMgr.Create(appUser, 
           ConfigurationManager.AppSettings["AppUserPasswordKey"]);**

           
          if(!userMgr.IsInRole(userMgr.FindByEmail("
               canEditUser@gamestore.com").Id, "canEdit"))
            {
                IdUserResult = userMgr.AddToRole(userMgr.FindByEmail("
                 canEditUser@gamestore.com").Id, "canEdit");
            }
        }
    }
}

下面是此 Admin 文件夹的配置文件,但如您所见,不涉及密码..

<?xml version="1.0"?>
  <configuration>
  <system.web>
     <authorization>
       <allow roles="canEdit"/>
       <deny users="*"/>
      </authorization>
  </system.web>
  </configuration>

你期待在哪里

ConfigurationManager.AppSettings["AppUserPasswordKey"]

从哪里得到密码?您没有在配置文件中输入值以供其读取。

我不得不说 非常 将新用户的密码放在 ap 配置文件中会很奇怪。

我的意思是你说 'see there is no password here',没错,那么为什么你的代码试图从那里读取密码?