5

Entity Framework で利用できる移行機能について学習していますが、問題が発生しているようです。インターネット アプリケーション プロジェクト テンプレートと有効なエンティティ フレームワークの移行などを使用する場合、自動移行を使用して、データベースにデフォルト ユーザーを作成しようとしています。

protected override void Seed(eManager.Web.Infrastructure.DepartmentDb context)
{            
   WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "Email", false);

    if (!WebSecurity.UserExists("ahicks2"))
    {
        WebSecurity.CreateAccount("ahicks2", "password", requireConfirmationToken:true);
    }

    if (!Roles.RoleExists("Admin"))
    {
        Roles.CreateRole("Admin");
    }
}

パッケージ マネージャーで「Update-Database -verbose」を実行すると、次のエラーが表示されます。

シード メソッドを実行します。System.Web.Security.MembershipCreateUserException: プロバイダーで不明なエラーが発生しました。

WebMatrix.WebData.SimpleMembershipProvider.CreateAccount (文字列のユーザー名、文字列のパスワード、ブール値の requireConfirmationToken) で WebMatrix.WebData.WebSecurity.CreateAccount (文字列のユーザー名、文字列のパスワード、ブール値の requireConfirmationToken) で

スタック トレースの次の行はConfiguration.Seed呼び出しです。私のWeb構成では、メンバーシッププロバイダーに次の設定を使用して、必要なデータベースにテーブルが作成されることを保証しています:

<membership defaultProvider="DefaultMembershipProvider">
    <providers>
        <clear/>
        <add name="DefaultMembershipProvider" 
             type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
             connectionStringName="DefaultConnection"/>

データベース テーブルは正しく作成されていますが、コードは create ユーザーに当てはまります。誰でも助けることができますか?シンプルなものだと確信しています。私はこれらの機能をテストしたいと思いました - もちろん簡単な答えは、asp.net 2.0 のメンバーシップ プロバイダーを使用するように戻すことです! しかし、私はこれを機能させたいと思っていました。どんな助けでも大歓迎です。

編集:ちなみに、私はこれを試しました: http://forums.asp.net/t/1598261.aspx/1この問題は解決しません。

4

2 に答える 2

5

答えは表面にあります。このメソッドに関する MSDN ページを見てください: WebSecurity.CreateAccount メソッド

一致するユーザー情報 (userName で表される) がユーザー プロファイル テーブルに既に存在することを前提としています。(メンバーシップ テーブルとユーザー プロファイル テーブルの両方で新しいユーザーを作成するには、CreateUserAndAccount(String, String, Object, Boolean) メソッドを使用します。)

于 2012-09-11T20:47:39.710 に答える
0

これは私のために働いた:

WebMatrix.WebData.WebSecurity.CreateUserAndAccount("YOURUSERNAME", "YOURPASSWORD");

また、コントローラー/クラスが

[InitializeSimpleMembership]

私はあなたと同じようなことをしようとしていて、苦労しています!

ロールの作成に失敗しています。

ダン。

于 2012-08-29T20:12:41.640 に答える