我在ASP.NET MVC应用中使用ASP.NET Identity。将用户添加到角色时出现问题。没有任何异常,但是由于um.AddToRole(),没有向AspNetUserRoles表添加db条目。我的行动方法如下:
public ActionResult GrantAdmin(string id)
{
ApplicationUser user = um.FindById(id);
if (!rm.RoleExists("admin"))
{
rm.Create(new IdentityRole("admin"));
}
um.AddToRole(user.Id, "admin");
return View((object)user.UserName);
}
um是UserManager类的对象:
private UserManager<ApplicationUser> um = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()));
这种应用行为的原因是什么?有什么想法吗?
=== EDIT === 这是我的DbContext:
public ApplicationDbContext()
: base("DefaultConnection")
{
}
Web.config中的默认连接:
<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-RecommendationPlatform-20140404055015.mdf;Initial Catalog=aspnet-RecommendationPlatform-20140404055015;Integrated Security=True" providerName="System.Data.SqlClient" />
答案 0 :(得分:5)
使用ASP.NET Identity时,请务必记住,许多操作会返回存储最终错误的结果对象。没有例外。因此,应该在每次操作后检查结果对象是否成功。这不仅适用于角色,也适用于将数据保存到数据库的大多数方法。即使它有效,你仍然应该测试成功,如果结果不成功,最终会抛出异常。
根据您案例中的评论,问题是用户名无效。