c# - AddToRole() 方法不会导致 ASP.NET Identity 中的数据库条目

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

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

相关文章:

c# - 从流中播放 MP3

asp.net - 处理 “Invalid Postback or Callback Argument”错误

c# - 如何从 LINQ 查询将匿名类型转换为强类型

c# - 如何使用 ASP.NET 和 jQuery 返回 JSON

c# - Properties.Settings.Default 是否有非默认替代方案?

c# - 为什么我的复选框没有映射到 MVC 模型成员?

jquery - 将 ASP.NET MVC 3 应用程序中的 jQuery 更新到最新版本

c# - 500 内部服务器错误 JsonResult mvc asp.net

c# - 为什么 wcf 不允许没有 http 模块,通过传输安全模式进行用户名/密码身份验证

c# - 未知对象的 JSON API 操作参数