0

我已经阅读了许多链接来尝试帮助我解决这个问题。我正在通过 Pluralsight 学习我的第一个 MVC 教程,并且我正在继续使用身份验证。它使用 MVC4 Internet 应用程序模板。

在我的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 帖子安装它SimpleMembership,并且还添加了appsetings不起作用的软件包。

我还根据评论阅读了此MSDN 链接,我已按照说明进行操作,但仍然无法解决。

我还需要做什么才能使其正常工作?它快把我逼疯了。

谢谢,

卢克。

4

1 回答 1

1

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

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

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

于 2013-03-22T15:19:01.360 回答