0

この問題を解決するために、いくつかのリンクを読みました。Pluralsightで最初のMVCチュートリアルを実行し、認証の使用に移ります。MVC4インターネットアプリケーションテンプレートを使用します。

私の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の投稿に従ってインストールし、機能しないパッケージを追加してSimpleMembershipましappsetingsた。

コメントに従ってこのMSDNリンクも読みました。指示に従いましたが、まだ解決できません。

これを機能させるには、他に何をする必要がありますか?それは私を狂気に駆り立てています。

ありがとう、

ルーク。

4

1 に答える 1

1

ここでの問題はMembership.CreateUser()、SimpleMembershipProviderが初期化される前に呼び出していることです。これは、AccountControllerの属性を介して初期化されます(ログイン関数はAccountControllerの一部であるため、通常、ユーザーがログインしたときにロードされます。

残念ながら、シード関数はAccountControllerにアクセスする前に実行されるため、プロバイダーはまだ初期化されていません。

InitializeSimpleMembershipAttribute.csクラスを見て、シード関数を実行する前にこれを呼び出す方法を見つけてください。

于 2013-03-22T15:19:01.360 に答える