Membership.Provider必须是ExtendedMembershipProvider的实例

时间:2013-03-22 15:12:09

标签: c# asp.net-mvc-4

我已阅读了许多链接,试图帮我解决这个问题。我正在通过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,我已按照说明操作,但仍然无法解决。

我还需要做些什么来实现这个目标?这让我疯了。

谢谢,

路。

1 个答案:

答案 0 :(得分:1)

这里的问题是您在SimpleMembershipProvider初始化之前调用Membership.CreateUser()。这是通过AccountController上的属性初始化的(通常在用户登录时加载,因为登录功能是AccountController的一部分。

不幸的是,您的种子函数在访问AccountController之前运行,因此提供程序尚未初始化。

查看InitializeSimpleMembershipAttribute.cs类,并找出在种子函数运行之前调用它的方法。