2013-03-22 151 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

相關問題