Aim*_*Kai 5 .net membership asp.net entity-framework-4 visual-studio-2012
我正在学习实体框架中可用的迁移功能,我似乎遇到了问题.当使用互联网应用程序项目模板和启用实体框架迁移等时.我试图在数据库上创建一个默认用户 - 使用自动迁移:
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");
}
}
Run Code Online (Sandbox Code Playgroud)
当我在包管理器中运行"Update-Database -verbose"时,我收到以下错误:
运行种子方法.System.Web.Security.MembershipCreateUserException:提供程序遇到未知错误.
at WebMatrix.WebData.SimpleMembershipProvider.CreateAccount(String userName,String password,Boolean requireConfirmationToken)at 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"/>
Run Code Online (Sandbox Code Playgroud)
正确创建了数据库表,但代码落在了创建用户上.有人可以帮忙吗?我确信这很简单.我想测试这些功能 - 当然一个简单的答案是恢复使用asp.net 2.0的会员提供程序!但我想尝试让它发挥作用.任何帮助,将不胜感激.
编辑:顺便说一句,我试过这个:http://forums.asp.net/t/1598261.aspx/1并没有解决这个问题.
小智 5
答案就在表面上.请查看有关此方法的MSDN页面: WebSecurity.CreateAccount方法
它假设用户配置文件表中已存在匹配的用户信息(由userName表示).(要在成员资格表和用户配置文件表中创建新用户,请使用CreateUserAndAccount(String,String,Object,Boolean)方法.)
这对我有用:
WebMatrix.WebData.WebSecurity.CreateUserAndAccount("YOURUSERNAME", "YOURPASSWORD");
Run Code Online (Sandbox Code Playgroud)
您可能还希望考虑确保控制器/类具有
[InitializeSimpleMembership]
Run Code Online (Sandbox Code Playgroud)
我正在尝试做和你类似的事情并且挣扎!
我创建角色失败。
担。