Visual StudioとC#についてはまだ比較的経験が浅いので、必要な情報が提供されていないか、説明が不明な場合はお知らせください。
Visual Studio 2010 Web DeveloperExpressにMVC4プロジェクトがあり、基本的なフォーム認証をセットアップしようとしています。ASP.NET Configuration Managerを使用して、いくつかのテストユーザーと役割を設定しました。Configuration Managerは、プロジェクトに含まれているApp_dataフォルダーにASPNETDB.MDFデータベースも作成しました。
現在、生成されたAccountControllerビューとAccountビューを使用しています。
[Authorize]属性を持つHTTPGETまたはHTTPPOSTメソッドにアクセスしようとすると、InitializeSimpleMembershipAttributeクラスの次のメソッドからTargetInvocationExceptionがスローされます。
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);
}
例外の詳細を表示すると、内部例外に「ASP.NET SimpleMembershipDatabaseを初期化できませんでした」と表示されます。
上記の内部例外の内部例外は、特定のモデルの「概念モデルタイプが見つかりませんでした」と述べています。
見つからなかったモデルは、データベースから生成されたADO.Net[.edmx]ファイルに属しています。見つからないモデルは、アルファベット順にデータベースの最初のテーブル/クラスであるため、そのデータベースのすべてのクラスにも適用される可能性があります。
それが重要かどうかはわかりませんが、ASPNETDB.MDFとは別のデータベースを使用して、Webサイトに入力された情報を保存しています。
LazyInitializer.EnsureInitialized()メソッドがこの問題を引き起こしている理由がわかりません。