私の最初の MVC 4 アプリケーションでは、コードで次のエラーが発生します。
WebSecurity.InitializeDatabaseConnection("fousuEntities", "usertable", "UserID", "UserCode", autoCreateTables: true);
私の設定ファイルには、次のエントリがあります。
<add name="fousuEntities" connectionString="metadata=res://*/fousutable.csdl|res://*/fousutable.ssdl|res://*/fousutable.msl;provider=MySql.Data.MySqlClient;provider connection string="server=localhost;User Id=user;password=pwd;database=fousutable"" providerName="System.Data.EntityClient" />
このコードで見逃したものを教えてください。
- ビジュアル スタジオ 2010 SP1
- MVC4
- simplemembership プロバイダーを使用しようとしています
- インストールされたEntity Framework 5.0
- .Net フレームワーク 4.0
- データベース MySQL 5.1
更新 1:
エラーの詳細:
要求された .Net Framework Data Provider が見つかりません。インストールされていない可能性があります。
説明: 現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。
例外の詳細: System.ArgumentException: 要求された .Net Framework データ プロバイダーが見つかりません。インストールされていない可能性があります。
Line 32: using (var context = new UsersContext())
Line 33: {
Line 34: if (!context.Database.Exists())
Line 35: {
Line 36: // Create the SimpleMembership database without Entity Framework migration schema
更新 2:
web.config のエントリを変更することで、上記のエラーを取り除くことができました。次のように、別のエラーが発生します。
<add name="fousuEntities" connectionString="Server=MySQL; Database=fousutable; uid=user; pwd=pwd;" providerName="MySql.Data.MySqlClient"/>
System.Data の下にもう 1 つのエントリを追加し、
<system.data>
<DbProviderFactories>
<remove invariant="MySql.Data.MySqlClient" />
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=5.1.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
今私が得た新しいエラーは、
呼び出しのターゲットによって例外がスローされました。行 LazyInitializer、
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
// Ensure ASP.NET Simple Membership is initialized only once per app start
LazyInitializer.EnsureInitialized(ref _initializer, ref _isInitialized, ref _initializerLock);
}
InnerExceptionの詳細を参照したところ、「ASP.NET シンプル メンバーシップ データベースを初期化できませんでした」というメッセージが表示されました。