1

VS2012 で新しい MVC 4 プロジェクトを作成しましたが、作成したカスタム メンバーシップ プロバイダーを使用しようとして問題が発生しましたMembershipProvider

メソッドは次のAccountController.Login例外をスローします。

このメソッドを呼び出すには、「Membership.Provider」プロパティが「ExtendedMembershipProvider」のインスタンスである必要があります。

を無効enableSimpleMembershipにしても( asp.net 4.5 カスタム メンバーシップ プロバイダーの構成autoFormsAuthenticationで推奨されているように、奇妙な例外がスローされる) 違いはありません。

を削除するWebMatrix.WebData.dllと、AccountController参照時にコンパイルされなくなりますWebMatrix.WebData.WebSecurity

これらは私が取ったステップです:

  • VS 2012 で、新しい APS.NET MVC 4 プロジェクト (.net 4.0) を作成します。

  • CustomMembershipProviderを実装するという新しいクラスを追加します。MembershipProvider

  • web.configセットenableSimpleMembership = false内にメンバーシップ プロバイダーを追加しますautoFormsAuthentication = falseappSettingssystem.web

  • Web サイトをデバッグで起動し、ページの [ログイン] をクリックします。

  • ユーザー名とパスワードの古いテキストを入力します

私は例外を受け取ります:

このメソッドを呼び出すには、「Membership.Provider」プロパティが「ExtendedMembershipProvider」のインスタンスである必要があります。

何か案は?

4

1 に答える 1

2

VS.Net 2010を使用して、あなたの手順に従い、例外を再現することができました。

これは、例外が示すように、MembershipProviderではなくExtendedMembershipProviderを実装することで解決できます。

ExtendedMembershipProviderは、アセンブリWebMatrix.WebData.dllおよび名前空間WebMatrix.WebDataに存在します。これは、GeneratePasswordResetTokenやGetLastPasswordFailureDateなど、MembershipProviderよりも多くの抽象的なメソッドとプロパティを定義します。これらはすべて、実装する必要があります。

まず、コンテキストメニューから[抽象クラスの実装]を使用し: ExtendedMembershipProviderて、私と同じように機能するかどうかを確認できます。

再現する手順から始めた場合、ValidateUserの本体をに置き換えるreturn true;と、任意のユーザー名とパスワードで正常にログインできるようになります。

于 2013-01-09T21:22:11.087 に答える