如何调试此 "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 覆盖。
- 一个有参数:manager,TUser user
- 另一个有参数: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',没错,那么为什么你的代码试图从那里读取密码?
基本上,我正在尝试创建一个可以 add/remove 应用程序中的产品的管理员角色 (canEdit)。分析“IdentityResult Create”扩展方法我发现它有 +1 覆盖。
- 一个有参数:manager,TUser user
- 另一个有参数: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',没错,那么为什么你的代码试图从那里读取密码?