Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 4 WebSecurity.Initialized为true,但表不存在_Asp.net Mvc 4 - Fatal编程技术网

Asp.net mvc 4 WebSecurity.Initialized为true,但表不存在

Asp.net mvc 4 WebSecurity.Initialized为true,但表不存在,asp.net-mvc-4,Asp.net Mvc 4,我的web应用程序有一个自我安装过程;它正确地检测到数据库未初始化,并通过迁移对其进行初始化;我还进行了自动集成测试,测试安装在这些情况下是否正常工作,并进行了冒烟测试,登录并注册安装表单上提供的第一个用户 我最近从MVC3切换到MVC4。我使用了MVC3中的内置存储提供程序,即aspnet_*表;在MVC4中,带有UserProfile表的Web安全性 我不再从.SQL文件手动运行所有MVC3存储过程,而是调用WebSecurity.InitializeDatabaseConnection。事

我的web应用程序有一个自我安装过程;它正确地检测到数据库未初始化,并通过迁移对其进行初始化;我还进行了自动集成测试,测试安装在这些情况下是否正常工作,并进行了冒烟测试,登录并注册安装表单上提供的第一个用户

我最近从MVC3切换到MVC4。我使用了MVC3中的内置存储提供程序,即aspnet_*表;在MVC4中,带有UserProfile表的Web安全性

我不再从.SQL文件手动运行所有MVC3存储过程,而是调用WebSecurity.InitializeDatabaseConnection。事实上,我的代码片段是:

 if (!WebSecurity.Initialized)
 {
     WebSecurity.InitializeDatabaseConnection("ApplicationServices", "UserProfile", "UserId", "UserName", true);
     MigrationsWrapper.MigrateToLatestVersion(); // wrapper around migratordotnet                     
 }
不幸的是,我注意到一个有趣的错误。当我编译服务器代码并运行安装测试时,在新安装空数据库后,它会按预期通过。如果我立即再次运行测试,它将失败

失败的原因是什么?在我的安装测试中,我核掉了所有的DB表,并期望安装重新创建它们。但是,在本例中,WebSecurity.Initialized返回true而不是false。因此,我从未点击第二行初始化和创建表。如果我把那条线移到外面,我会得到一个异常,我正在双重初始化

不幸的是,我在这里真正需要的是像WebSecurity.CreateTables这样的方法,它并不存在。因此,我陷入了僵局。我该怎么处理

另外,如果我尝试自己重新创建UserProfile表,我会遇到一个问题,UserId主键被插入为null——可能是因为我缺少其他表


我应该如何处理这种情况?

目前唯一的解决办法是重置IIS。悲伤,但真实;这样做将重置WebSecurity.Initialized,一切正常

因为我需要在应用程序启动时重新启动,所以我可以使用Process.start以编程方式重置IIS