1

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

任何帮助表示赞赏。

4

1 回答 1

5

SimpleMembership DB 在运行之前必须存在

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

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

 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);
    }
  }
}
于 2012-11-24T02:05:34.627 回答