c# - Asp.Net Identity 在种子方法中创建角色失败

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

我试图在 seed 方法中添加一个新角色,但是当我运行代码时,浏览器一直在加载并且没有任何响应。使用调试器,发现代码卡在了create方法上。

我不知道发生了什么。感谢任何帮助。

谢谢!

public class ApplicationDbContextInitializer : DropCreateDatabaseIfModelChanges<ApplicationDbContext> 
{
    protected override void Seed(ApplicationDbContext context)
    {
        var rm = new RoleManager<IdentityRole>(
            new RoleStore<IdentityRole>(new ApplicationDbContext()));
        var idResult = rm.Create(new IdentityRole("Admin"));

        base.Seed(context);
    }
}

Global.asax 文件:

public class MvcApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);

        Database.SetInitializer(new ApplicationDbContextInitializer());

        ApplicationDbContext db = new ApplicationDbContext();
        db.Users.FirstOrDefault();

    }
}

在这篇文章之后,播种数据可以很好地迁移。但我想找到一个不使用迁移的解决方案,这样每次模型更改时它都会删除并创建一个新数据库。 http://typecastexception.com/post/2013/11/11/Extending-Identity-Accounts-and-Implementing-Role-Based-Authentication-in-ASPNET-MVC-5.aspx

最佳答案

尝试改变

var rm = new RoleManager<IdentityRole>(
    new RoleStore<IdentityRole>(new ApplicationDbContext()));

使用传递给 Seed() 方法的上下文,而不是创建一个新的...

var rm = new RoleManager<IdentityRole>(
    new RoleStore<IdentityRole>(context));

关于c# - Asp.Net Identity 在种子方法中创建角色失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22473032/

相关文章:

c# - 如何找到哪些 nuget 包包含我想要的项目

ajax - 不显眼的 AJAX 错误 : "Uncaught ReferenceError: Sys is not defined"

jquery - 我是否总是需要显式捆绑 jQuery UI 的所有样式?

c# - 丢失在 Global.asax 中声明并在 webrole 的 onstart 事件中初始化的静态变量的值

c# - 您为初学者推荐的一些基本的 c# 程序

asp.net-mvc - “System.Web.Webpages.Html.Htmlhelper”不包含 'Sitecore' 的定义

c# - 面对没有主键约束的表时,Dapper 或 ADO.NET

c# - 一次向 NetworkStream.Write() 提供多少数据?

c# - CaSTLe Windsor 处置命令

jquery - select2和远程数据: pre-set value and text avoiding server round-trip