VS 2012 で、インターネット アプリケーション テンプレートから始まる新しい MVC 4 プロジェクトを作成し、LocalDB の代わりに SQL Server Express を使用するようにプロパティを変更し、新しいユーザーの登録に成功しました。
最初に、プロジェクトはフォルダー内に独自のメンバーシップ データベースを作成しましたApp_data
が、配置上の理由からデータベースの場所を変更したかったため、データベースの物理ファイルを から に移動C:\MyProject\App_Data\
しC:\MyData
、ファイル内の関連するパスを変更しましたweb.config
。データベースが SQL Server Express インスタンスから確実にアクセスできるようにするために、プロパティ セキュリティ タブでフル アクセスを持つ自分のユーザー アカウントを追加し、そのデータを SQL Server Management Studio で正常に表示しました。
ここで、プロジェクトを実行して「ログイン」リンクをクリックすると、デバッガーが停止しLazyInitializer.EnsureInitialized
、エラーで失敗します。エラーメッセージの内部例外は次のように述べています:
データベース 'C:\MyProject\App_Data\aspnet-MyProject-20121206123456.mdf' は既に存在します。別のデータベース名を選択してください。
ファイル 'C:\MyData\aspnet-MyProject-20121206123456.mdf' をデータベース 'aspnet-MyProject-20121206123456.mdf' として添付できません
すべてのプロジェクトをチェックして、異なるデータベース接続設定を見つけましたが、何も見つかりませんでした。
VS 内で、サーバー エクスプローラーを使用してデータベース テーブルのデータを表示すると、表示されたテーブルの 1 つを右クリックしても、C:\MyData\
フォルダーに移動して物理データベース ファイルのプロパティを表示しても、[データを表示] オプションが見つかりません。セキュリティ タブを確認すると、プロジェクトを実行するたびに、フル アクセスを使用しているアカウントが削除されていることがわかりました。
また、ブラウザーには次の例外テキストが表示されます。
The data provider. Net Framework requested was not found. It may not be installed.
C:\MyProject\Filters\InitializeSimpleMembershipAttribute.cs ライン: 42
Ligne 40 : }
Ligne 41 :
Ligne 42 : WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true);
Ligne 43 : }
Ligne 44 : catch (Exception ex)