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

时间:2012-11-23 23:21:09

标签: entity-framework asp.net-mvc-4

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

当我移动

WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true);

到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中注释掉对它的引用。

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:5)

SimpleMembership DB必须在运行之前存在

WebSecurity.InitializeDatabaseConnection("AccountDB", "UserProfile",
              "UserId", "UserName", autoCreateTables: true);

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

 WebSecConfig.RegisterWebSec();

将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);
    }
  }
}