【问题标题】:How to call "WebSecurity.InitializeDatabaseConnection" method before "WebSecurity" class如何在“WebSecurity”类之前调用​​“WebSecurity.InitializeDatabaseConnection”方法
【发布时间】:2019-07-07 10:16:57
【问题描述】:

我正在尝试将成员身份植入我的 asp.net mvc 应用程序(在 migrations/config.cs 文件中)

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 中启用了角色管理器和成员管理器

<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>

虽然当我尝试在包管理器控制台中更新数据库以运行种子方法时,我收到以下错误:

您必须调用“WebSecurity.InitializeDatabaseConnection”方法 在调用“WebSecurity”类的任何其他方法之前。这个电话 应该放在站点根目录下的 _AppStart.cshtml 文件中。

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

@using System.Configuration;
@{  
   WebSecurity.InitializeDatabaseConnection("DefaultConnection", 
   "UserProfile", "UserId", "UserName", autoCreateTables: true);
}

尝试上述方法后,我仍然遇到相同的错误。有人可以指出我正确的方向吗?即如何在“WebSecurity”类之前调用​​“WebSecurity.InitializeDatabaseConnection”方法?

【问题讨论】:

    标签: c# asp.net asp.net-mvc model-view-controller


    【解决方案1】:

    所以在弄乱了代码之后,我在 seed() 方法的顶部添加了初始化数据库调用,它工作正常

    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" });
            }
        }
    

    【讨论】:

      猜你喜欢
      • 2013-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-29
      • 2023-04-08
      相关资源
      最近更新 更多