【问题标题】:Membership.Provider must be instance of ExtendedMembershipProviderMembership.Provider 必须是 ExtendedMembershipProvider 的实例
【发布时间】:2013-03-22 15:12:08
【问题描述】:

我已经阅读了许多链接来尝试帮助我解决这个问题。我正在通过 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 帖子尝试了 installing it,并将 SimpleMembership 添加到 appsetings 中,这不起作用。

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

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

谢谢,

卢克。

【问题讨论】:

  • @DaveSwersky 我也看过了,找不到任何具体的东西,不过我会再读一遍:)
  • 第一个答案中的链接似乎有一些细节。
  • @DaveSwersky 是的,我浏览了这篇文章,上面写着If you want to use the new AccountController, you'll either need to use the SimpleMembershipProvider or another valid ExtendedMembershipProvider. This is pretty straightforward. 这不适合我!我不知道我需要从这里做什么,我不清楚
  • @DaveSwersky - 该链接不是问题的解决方案,他的问题与那个不同。那个涉及使用通用会员提供者而不是简单的会员提供者,这里不是这种情况。

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


【解决方案1】:

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

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

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

【讨论】:

  • 对不起,我不能把我的 OP 说得很清楚。种子部分工作正常,当我通过AccountController 登录时,我遇到了问题。
  • @LukeHennerley - 您是否在 web.config 中添加了成员​​资格定义?如果是这样,那么您将覆盖简单的成员资格提供程序,并且当您登录时它正在尝试初始化提供程序。
  • 我自己没有添加它,我使用了nuget.org/packages/Microsoft.AspNet.Providers,它根据我的教程将DefaultRoleProviderDefaultMembershipProvider 添加到web.config 中。发布这部分代码会让您更容易回答吗? :)
  • @LukeHennerley - 好的,那么您将添加通用提供程序。您需要做的就是从 AccountController 类中删除 [InitializeSimpleMembership] 属性,并且您可能必须删除任何依赖它的代码。
  • 是的,我自己也这么认为,我认为我将不得不创建一个自定义 AccountController 或类似的东西?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-23
  • 1970-01-01
  • 2019-03-21
  • 2012-05-04
  • 1970-01-01
相关资源
最近更新 更多