3

SimpleMembership を使用してユーザーを認証する MVC4 アプリケーションがあります。

コンソール プログラムからユーザーを追加したい。

ユーザー作成を行うメソッドを持つクラス ライブラリを参照するコンソール プログラム。

次のようになります。

public class UserBuilder
{
    private static readonly SimpleMembershipInitializer _membershipInitializer;
    private static readonly bool _isInitialized;
    private static readonly object _initializerLock = new object();

    static UserBuilder()
    {
        LazyInitializer.EnsureInitialized(ref _membershipInitializer, ref _isInitialized, ref _initializerLock);
    }

    public void HandleEvent(UserAdded @event)
    {
        if (!WebSecurity.UserExists("ReportModels"))
        {
            WebSecurity.CreateUserAndAccount("ReportModels", "ReportModels");
        };
    }

    private class SimpleMembershipInitializer
    {
        public SimpleMembershipInitializer()
        {
            WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true);
        }
    }
}

コンソール アプリケーションを起動するSystem.Configuration.Provider.ProviderException {"The Role Manager feature has not been enabled."}と、 で始まる行が表示されWebSecurity.InitializeDatabaseConnectionます。

これを達成するために何をする必要がありますか?

私はもう試した:

  • nuget パッケージ Microsoft ASP.NET Web Pages 2 Web Data をコンソール プロジェクトとクラス ライブラリ プロジェクトの両方に追加します。
  • この投稿にリストされている回答: SimpleMembershipProvider not working .
  • 接続文字列を確認しました。
  • テーブルがデータベースに配置されていることを確認しました。
  • ユーザーの作成と MVC4 プロジェクトからの認証が機能することを確認しました。
4

1 に答える 1

3

このブログ投稿で見つかった情報のおかげで、最終的に解決しまし:グーグル。

本質的に、これを app.config ファイルに追加する必要がありました。

<system.web>
<profile defaultProvider="SimpleProfileProvider">
  <providers>
    <add name="SimpleProfileProvider" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData"
        connectionStringName="DefaultConnection" applicationName="/" />
  </providers>
</profile>
<membership defaultProvider="SimpleMembershipProvider">
  <providers>
    <add name="SimpleMembershipProvider" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" />
  </providers>
</membership>
<roleManager defaultProvider="SimpleRoleProvider" enabled="true">
  <providers>
    <add name="SimpleRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData"/>
  </providers>
</roleManager>
</system.web>

要素に注意してくださいenabled="true"roleManagerそれがなければ、同じ例外がスローされます。

于 2013-11-05T09:27:10.537 に答える