首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在"WebSecurity.InitializeDatabaseConnection“类之前调用"WebSecurity”方法

如何在"WebSecurity.InitializeDatabaseConnection“类之前调用"WebSecurity”方法
EN

Stack Overflow用户
提问于 2019-07-07 10:16:57
回答 1查看 172关注 0票数 0

我正在尝试将成员加入到我的asp.net mvc应用程序中(在迁移/config.cs文件中)

代码语言:javascript
复制
protected override void Seed(Logintest.Models.ApplicationDbContext 
context)
    {
        var roles = (SimpleRoleProvider)Roles.Provider;
        var membership = (SimpleMembershipProvider)Membership.Provider;

        if(!roles.RoleExists("Admin"))
        {
            roles.CreateRole("Admin");
        }
        if(membership.GetUser("jay", false) == null)
        {
            membership.CreateUserAndAccount("jay", "otoole");
        }
        if(!roles.GetRolesForUser("jay").Contains("Admin"))
        {
            roles.AddUsersToRoles(new[] { "jay" }, new[] { "admin" });
        }
    }

我还在Web.config中启用了角色管理器和成员管理器

代码语言:javascript
复制
<roleManager enabled="true" defaultProvider="simple">
  <providers>
    <clear/>
    <add name="simple" type="WebMatrix.WebData.SimpleRoleProvider,
         WebMatrix.WebData"/>
  </providers>
</roleManager>
<membership defaultProvider="simple">
  <providers>
    <clear/>
    <add name="simple" type="WebMatrix.WebData.SimpleMembershipProvider,
         WebMatrix.WebData"/>
  </providers>
</membership>

虽然当我试图在Package控制台中更新数据库以运行Seed方法时,我得到了以下错误:

在调用"WebSecurity.InitializeDatabaseConnection“类的任何其他方法之前,必须调用"WebSecurity”方法。此调用应放在站点根目录中的_AppStart.cshtml文件中。

我找不到_AppStart.cshtml文件,所以我创建了它,并在其中放置了以下内容:

代码语言:javascript
复制
@using System.Configuration;
@{  
   WebSecurity.InitializeDatabaseConnection("DefaultConnection", 
   "UserProfile", "UserId", "UserName", autoCreateTables: true);
}

经过以上的尝试,我仍然得到相同的错误。谁能帮我指出正确的方向吗?也就是说,如何在"WebSecurity.InitializeDatabaseConnection“类之前调用"WebSecurity”方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-07 16:22:09

因此,在混乱了代码之后,我在seed()方法的顶部添加了初始化数据库调用,它运行得很好

代码语言:javascript
复制
protected override void Seed(Logintest.Models.ApplicationDbContext context)
    {
        WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", 
          "UserId", "UserName", autoCreateTables: true);

        var roles = (SimpleRoleProvider)Roles.Provider;
        var membership = (SimpleMembershipProvider)Membership.Provider;

        if (!roles.RoleExists("Admin"))
        {
            roles.CreateRole("Admin");
        }
        if (membership.GetUser("jay", false) == null)
        {
            membership.CreateUserAndAccount("jay", "otoole");
        }
        if (!roles.GetRolesForUser("jay").Contains("Admin"))
        {
            roles.AddUsersToRoles(new[] { "jay" }, new[] { "admin" });
        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56921233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档