2012-10-26 140 views
1

我在VS2012中創建了一個新的MVC 4項目,現在遇到了嘗試使用我創建的自定義成員資格提供程序的問題,它從MembershipProvider繼承。自定義成員資格提供程序MVC 4

AccountController.Login方法拋出此異常:

要調用這個方法,「Membership.Provider」屬性必須是「ExtendedMembershipProvider」的一個實例。

禁用enableSimpleMembershipautoFormsAuthentication(截至asp.net 4.5 custom membership provider configuration throws strange exception推薦)沒有什麼區別。

卸下WebMatrix.WebData.dll,導致AccountController不編譯,因爲它引用WebMatrix.WebData.WebSecurity

這是我所採取的步驟:

  • 在VS 2012創建一個新的MVC APS.NET 4項目(.NET 4.0)

  • 添加一個名爲CustomMembershipProvider新的類,它實現MembershipProvider

  • web.config設置enableSimpleMembership = falseautoFormsAuthentication = falseappSettingssystem.web

  • 添加成員提供

    在調試啓動網站和「日誌」單擊頁面上

  • 輸入任何舊的文本輸入用戶名和密碼

我得到異常:

要調用這個方法,「Membership.Provider」屬性必須是「ExtendedMembershipProvider」

任何想法的一個實例?

回答

2

我按照你的步驟,與VS.Net 2010即是,並能夠重現異常。

這可以通過實現ExtendedMembershipProvider而不是MembershipProvider來解決,如例外所示。

ExtendedMembershipProvider駐留在程序集WebMatrix.WebData.dll和命名空間WebMatrix.WebData中。它定義了比MembershipProvider更多的抽象方法和屬性,比如GeneratePasswordResetToken和GetLastPasswordFailureDate,所有這些都需要實現。

首先,您可以簡單地使用: ExtendedMembershipProvider上下文菜單中的Implement Abstract Class,看看它是否適用於您,就像它爲我所做的一樣。

如果您從重現步驟開始,將ValidateUser正文替換爲return true;將允許您使用任何用戶名和密碼成功登錄。

相關問題