2013-03-22 106 views
0

我已阅读了一些链接以尝试并帮助我解决此问题。我通过Pluralsight跟踪我的第一个MVC教程,并且正在开始使用身份验证。它使用MVC4互联网应用程序模板。Membership.Provider必须是ExtendedMembershipProvider的实例

在我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罚款,这一切似乎虎背熊腰,脚蹬dory的,也是一样的教程。然后它会指示使用我的凭据登录。所以我尝试登录,我得到的称号规定的例外:

Membership.Provider必须ExtendedMembershipProvider实例

我曾尝试重新安装所需的软件包,并还试图installing it为每SO帖子并且将SimpleMembership添加到appsetings不起作用。

我也读过这个MSDN link根据评论,我遵循指示,但仍然无法解决它。

我还需要做些什么才能做到这一点?这让我疯狂。

谢谢,

卢克。

+0

可能重复(HTTP://计算器.com/questions/12181186/mvc4-extendedmembershipprovider-and-entityframework) – 2013-03-22 15:13:40

+0

@DaveSwersky我看过也没有找到任何具体的东西我会有另一个阅读虽然:) – LukeHennerley 2013-03-22 15:14:51

+0

第一个答案中的链接似乎有一些细节。 – 2013-03-22 15:15:48

回答

1

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

不幸的是,你的种子函数在AccountController被访问之前运行,因此,供应商尚未初始化

看那InitializeSimpleMembershipAttribute.cs类,并想出一个办法,你的种子函数之前调用这个运行

[MVC4 ExtendedMembershipProvider和的EntityFramework]的
+0

对不起,我让我的OP非常清楚。种子部分工作正常,这是我通过'AccountController'登录时遇到问题。 – LukeHennerley 2013-03-22 15:20:49

+0

@LukeHennerley - 您是否在web.config中添加了成员​​资格定义?如果是这样的话,那么您将覆盖简单的成员资格提供程序,并且在您登录时尝试初始化提供程序。 – 2013-03-22 15:22:15

+0

我没有自己添加它,我使用了http://nuget.org/packages/Microsoft.AspNet.Providers,它将'DefaultRoleProvider'和'DefaultMembershipProvider'按照我的教程添加到web.config中。发布代码的这个区域会让你更容易回答吗? :) – LukeHennerley 2013-03-22 15:25:37

相关问题