WebSecurity.InitializeDatabaseConnection方法只能调用一次

时间:2012-10-25 16:38:28

标签: asp.net-mvc azure

我正在尝试使用Windows Azure来托管MVC4 Web应用程序。 我使用VS2012 MVC4互联网应用程序模板创建了一个测试应用程序,并为其添加了自定义模型和控制器。

我已经在Azure上发布了它,并设法让“update-database”将迁移应用到Azure数据库。

当我在本地尝试应用程序但使用Azure SQL数据库时,它可以正常工作。 我可以登录/注册并使用我的测试控制器。

当我在线试用应用程序时,我可以使用测试控制器,但登录或注册链接会出现以下异常:

Server Error in '/' Application.

The "WebSecurity.InitializeDatabaseConnection" method can be called only once.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.InvalidOperationException: The "WebSecurity.InitializeDatabaseConnection" method can be called only once.

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace: 


[InvalidOperationException: The "WebSecurity.InitializeDatabaseConnection" method can be called only once.]
   WebMatrix.WebData.WebSecurity.InitializeMembershipProvider(SimpleMembershipProvider simpleMembership, DatabaseConnectionInfo connect, String userTableName, String userIdColumn, String userNameColumn, Boolean createTables) +123
   WebMatrix.WebData.WebSecurity.InitializeProviders(DatabaseConnectionInfo connect, String userTableName, String userIdColumn, String userNameColumn, Boolean autoCreateTables) +51
   WebMatrix.WebData.WebSecurity.InitializeDatabaseConnection(String connectionStringName, String userTableName, String userIdColumn, String userNameColumn, Boolean autoCreateTables) +52
   MembershipTest2.Filters.SimpleMembershipInitializer..ctor() +193

你知道它来自哪里吗? 如果我调试(本地版本),此方法只被调用一次。

感谢。

3 个答案:

答案 0 :(得分:17)

你可以尝试将调用封装到该方法,以确保它不会被调用一次

                if (!WebMatrix.WebData.WebSecurity.Initialized)
                {
                    WebSecurity.InitializeDatabaseConnection(...);
                }

答案 1 :(得分:1)

在我的情况下,我有两个

(在web.config中)

<add key="enableSimpleMembership" value="true" />

(在_ViewStart.cshtml中)

WebSecurity.InitializeDatabaseConnection("club", "Account", "UserID", "UserName", autoCreateTables: true);

解决方案:似乎你不能同时拥有两者,所以删除一个

答案 2 :(得分:0)

以下SO讨论对您有帮助吗?

我确实发现以下文章帮助我使用了更新的MVC4&amp; EF与Simple Membership Provider一起使用,如果您还没有阅读,请查看:

SimpleMembership, Membership Providers, Universal Providers and the new ASP.NET 4.5 Web Forms and ASP.NET MVC 4 templates