我在我的 ASP.NET MVC 应用程序中使用 ASP.NET Identity。将用户添加到角色时出现我的问题。没有任何异常(exception),但由于 um.AddToRole() 没有数据库条目添加到 AspNetUserRoles 表中。我的操作方法如下所示:
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()));
这种应用程序行为的原因可能是什么?有什么想法吗?
===编辑=== 这是我的 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" />
最佳答案
使用 ASP.NET Identity 时,请务必记住,许多操作都会返回一个结果对象,最终错误会存储在该对象中。没有异常(exception)。因此,应该在每次操作后检查结果对象是否成功。这不仅适用于角色,也适用于大多数将数据保存到数据库的方法。即使它有效,您仍应测试是否成功,如果结果不成功,则最终抛出异常。
根据您案例中的评论,问题是用户名无效。
关于c# - AddToRole() 方法不会导致 ASP.NET Identity 中的数据库条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24352361/