我完全坚持这一点,我已经创建了一个操作,使用Identity Framework将新的Identity Role添加到我的数据库中。不幸的是,每当它被执行时,它返回它已经失败并且在我插入断点之后,我确定我传递null作为newRole
的值而不是superadmin,如预期的那样。
以下是我正在使用的网址,与我正在使用的网址完全相同:
https://localhost:44344/account/addrole/superadmin
这是相应的行动:
[Authorize(Roles = RoleNames.CanAddUsers)]
public ActionResult AddRole(string newRole)
{
var roleStore = new RoleStore<IdentityRole>(new ApplicationDbContext());
var roleManager = new RoleManager<IdentityRole>(roleStore);
var result = roleManager.Create(new IdentityRole(newRole));
return result.Succeeded
? Content(newRole + " added to database.")
: Content("Failed to add " + newRole + ".");
}
现在我检查并仔细检查了我登录的用户,因为在测试时有CanAddUsers这个角色,我没有被重定向到登录但只是接收Failed to add .
要确认,以下是我的路线,我找不到任何其他建议我的代码可能以不同的方式路由。
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
我确信在这一点上它可能是一个非常明显的错误,但我找不到它!
答案 0 :(得分:2)
如果您只想使用MapRoute,那么您应该知道将使用可选参数的名称(在您的情况下为id
)。
然后,您应该将操作的参数重命名为id
,或者明确说明您使用newRole
变量addrole?newRole=superadmin
。
否则,正如其他人指出的那样,您可能更喜欢使用POST代替GET。