我已阅读了许多链接,试图帮我解决这个问题。我正在通过Pluralsight关注我的第一个MVC教程,我正在继续使用身份验证。它使用MVC4互联网应用程序模板。
我的Seed
方法:
protected override void Seed(DepartmentDb context)
{
if (!Roles.RoleExists("Admin"))
Roles.CreateRole("Admin");
if (Membership.GetUser("Luke") == null)
{
Membership.CreateUser("Luke", "password");
Roles.AddUserToRole("Luke", "Admin");
}
}
用户和角色可以很好地添加到SQL
,这一切看起来都很笨拙,并且与教程相同。然后它指示使用我的凭据登录。所以我尝试登录并获得标题中声明的异常:
Membership.Provider必须是ExtendedMembershipProvider的实例
我已尝试重新安装所需的软件包,并根据SO帖子尝试installing it,并将SimpleMembership
添加到appsetings
,但这不起作用。
我还根据评论阅读了此MSDN link,我已按照说明操作,但仍然无法解决。
我还需要做些什么来实现这个目标?这让我疯了。
谢谢,
路。
答案 0 :(得分:1)
这里的问题是您在SimpleMembershipProvider初始化之前调用Membership.CreateUser()
。这是通过AccountController上的属性初始化的(通常在用户登录时加载,因为登录功能是AccountController的一部分。
不幸的是,您的种子函数在访问AccountController之前运行,因此提供程序尚未初始化。
查看InitializeSimpleMembershipAttribute.cs类,并找出在种子函数运行之前调用它的方法。