3

我有一个 MVC 4 EF web 项目,它带有一个代码优先的 sql server db,它非常接近于你在 web 上任何地方看到的任何基本和常用结构。

我已经阅读了互联网上发布的每一篇关于如何做我需要做的事情的文章,到目前为止,没有一篇文章对我的情况有任何影响。我没有做任何特别的事情,我只是根据我的项目的需要取出了“注册”新用户功能,并试图通过将它们包含在 Migrations/Configuration.cs 文件中来创建几个用户作为登录点,如下所示:

    protected override void Seed (EntityContext context)
    {
        if (!WebSecurity.Initialized)
            WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true);

        if (!Roles.RoleExists("Administrator"))
            Roles.CreateRole("Administrator");

        if (!WebSecurity.UserExists("Owner"))
            WebSecurity.CreateUserAndAccount("Owner", "password");

        if (!Roles.GetRolesForUser("Owner").Contains("Administrator"))
            Roles.AddUsersToRoles(new[] { "Owner" }, new[] { "Administrator" });

        if (!WebSecurity.UserExists("fred"))
            WebSecurity.CreateUserAndAccount("leemid", "pw");
        if (!Roles.GetRolesForUser("leemid").Contains("Administrator"))
            Roles.AddUsersToRoles(new[] { "leemid" }, new[] { "Administrator" });

        base.Seed(context);
    }

一切都在本地运行良好,但是当我发布到我的 Azure 帐户时,一切都已正确设置,尽我所知,该应用程序显示正确,只是我无法以我的种子用户身份登录。我已经使用 SQL Management Studio 连接到我的 Azure 数据库,并且所有 UserProfile 和 pages_ 表都在那里,特定于应用程序的表不是因为代码优先还没有机会构建(我假设),但是那里没有用户或角色。在本地,一切都按预期建造和填充。

我在根 Web.config 文件中添加了经常建议的代码,因此:

<system.web>
  <roleManager enabled="true" defaultProvider="SimpleRoleProvider">
      <providers>
          <clear/>
          <add name="SimpleRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData"/>
      </providers>
  </roleManager>
  <membership defaultProvider="SimpleMembershipProvider">
      <providers>
          <clear/>
          <add name="SimpleMembershipProvider"
               type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData"/>
      </providers>
  </membership>

当然,这一切都是为了成功发布该网站,但我对在播种用户方面缺乏成功感到沮丧。有人已经解决了这个问题吗?

4

0 回答 0