将WebSecurity.InitializeDatabaseConnection移动到Application_Start; 无法连接--- .mdf作为数据库---错误

Joe*_*Joe 1 entity-framework asp.net-mvc-4

MVC4,EF5,代码优先,VS Express 2012,Win 7 Pro

当我搬家的时候

WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true);
Run Code Online (Sandbox Code Playgroud)

到Global.asax.cs的Application_Start(我在xxxConfig.文件之前和之后尝试过)我收到以下错误信息.

无法将文件'D:\ DevProj\MVC4Test\MVC4Tst\App_Data\aspnet-MVC4Test-20121123150620.mdf'作为数据库'aspnet-MVC4Test-20121123150620'附加

它从InitializeSimpleMembershipAttribute运行良好,我通过SSMS删除了所有LocalDB数据库.这是一个使用所有默认值的新MVC4互联网项目(两天前安装了VS 2012 Express).编辑的唯一内容是移动WebSecurity.InitializeDatabaseConnection,从项目中排除InitializeSimpleMembershipAttribute,并在AccountController中注释掉对它的引用.

任何帮助赞赏.

Joe*_*Joe 5

SimpleMembership DB必须在运行之前存在

WebSecurity.InitializeDatabaseConnection("AccountDB", "UserProfile",
              "UserId", "UserName", autoCreateTables: true);
Run Code Online (Sandbox Code Playgroud)

一旦创建了SM DB(比如通过迁移),MVC4中的最佳实践就是在Global.asax.cs的Application_Start部分中包含对WebSecurity的调用.

 WebSecConfig.RegisterWebSec();
Run Code Online (Sandbox Code Playgroud)

将WebSecConfig.cs文件放在App_Start文件夹中.

WebSecConfig.cs

using WebMatrix.WebData;

namespace MVC4Test
{
  public static class WebSecConfig
  {
    public static void RegisterWebSec() {
      WebSecurity.InitializeDatabaseConnection("AccountDB", "UserProfile",
              "UserId", "UserName", autoCreateTables: true);
    }
  }
}
Run Code Online (Sandbox Code Playgroud)