AddToRole()方法不会导致ASP.NET标识中的数据库条目

时间:2014-06-22 14:43:29

标签: c# asp.net asp.net-mvc roles asp.net-identity

我在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" />

1 个答案:

答案 0 :(得分:5)

使用ASP.NET Identity时,请务必记住,许多操作会返回存储最终错误的结果对象。没有例外。因此,应该在每次操作后检查结果对象是否成功。这不仅适用于角色,也适用于将数据保存到数据库的大多数方法。即使它有效,你仍然应该测试成功,如果结果不成功,最终会抛出异常。

根据您案例中的评论,问题是用户名无效。