5

我正在学习 Entity Framework 中可用的迁移功能,但我似乎遇到了问题。当使用互联网应用程序项目模板并启用实体框架迁移等时。我试图在数据库上创建一个默认用户 - 使用自动迁移:

protected override void Seed(eManager.Web.Infrastructure.DepartmentDb context)
{            
   WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "Email", false);

    if (!WebSecurity.UserExists("ahicks2"))
    {
        WebSecurity.CreateAccount("ahicks2", "password", requireConfirmationToken:true);
    }

    if (!Roles.RoleExists("Admin"))
    {
        Roles.CreateRole("Admin");
    }
}

当我在包管理器中运行“Update-Database -verbose”时,出现以下错误:

运行种子方法。System.Web.Security.MembershipCreateUserException:提供程序遇到未知错误。

在 WebMatrix.WebData.SimpleMembershipProvider.CreateAccount(String userName, String password, Boolean requireConfirmationToken) 在 WebMatrix.WebData.WebSecurity.CreateAccount(String userName, String password, Boolean requireConfirmationToken)

堆栈跟踪中的下一行是Configuration.Seed调用。在我的 web 配置中,我使用以下成员资格提供程序设置来保证在我想要的数据库中创建表:

<membership defaultProvider="DefaultMembershipProvider">
    <providers>
        <clear/>
        <add name="DefaultMembershipProvider" 
             type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
             connectionStringName="DefaultConnection"/>

数据库表正在正确创建,但代码落在创建用户身上。任何人都可以帮忙吗?我敢肯定它很简单。我想测试这些功能——当然,一个简单的答案是从 asp.net 2.0 恢复使用会员提供程序!但我想尝试让它发挥作用。任何帮助,将不胜感激。

编辑:顺便说一句,我试过这个:http ://forums.asp.net/t/1598261.aspx/1并没有解决这个问题。

4

2 回答 2

5

答案就在表面上。查看有关此方法的 MSDN 页面: WebSecurity.CreateAccount Method

它假定用户配置文件表中已经存在匹配的用户信息(由 userName 表示)。(要在成员资格表和用户配置文件表中创建新用户,请使用 CreateUserAndAccount(String, String, Object, Boolean) 方法。)

于 2012-09-11T20:47:39.710 回答
0

这对我有用:

WebMatrix.WebData.WebSecurity.CreateUserAndAccount("YOURUSERNAME", "YOURPASSWORD");

您可能还希望考虑确保控制器/类具有

[InitializeSimpleMembership]

我正在尝试做与您类似的事情并苦苦挣扎!

我在创建角色方面失败了。

担。

于 2012-08-29T20:12:41.640 回答