0

好的,所以我设置了 SimpleMembership,我的印象是我只需要运行WebSecurity.InitializeDatabaseConnection(...)一次就可以设置数据库。后来,当我尝试查找用户 ID 时,我收到一条错误消息,告诉我需要在调用 WebSecurity 之前初始化数据库。好的...所以我按照建议将初始化调用放回 _ViewStart.cshtml 中。现在我再次运行,我得到了错误The "WebSecurity.InitializeDatabaseConnection" method can be called only once.所以如果我不这样做,我会被诅咒。

谁可以给我解释一下这个?

4

2 回答 2

1

是的,这实际上很简单。您正在使用一些在通常进行初始化之前需要简单成员资格的代码。因此,您收到错误消息并添加了一个调用来进行初始化,所以现在您的新代码可以工作.. 但随后它会进入旧代码.. 再次初始化数据库并引发错误。

问题基本上是您试图在管道中过早访问数据。每次创建应用程序域时都必须进行一次初始化(即,首次启动应用程序时,或在应用程序因不活动而被 IIS 关闭后重新启动后)。

这就是为什么您应该将它包装在对 WebSecurity.Initialized 的调用中

于 2013-07-27T05:39:35.027 回答
1

您需要将其放在 DatabaseConfig类WebSecurity.InitializeDatabaseConnection(...)的 DatabaseInit 方法中,如下所示:App_Start\DatabaseConfig.cs

    public static void DatabaseInit(string ConnectionName = "DefaultConnection", string userTable = "UserProfile", string userIdColumn = "UserId", string userNameColumn = "UserName", bool autoCreateTable = true)
    {
        WebSecurity.InitializeDatabaseConnection(ConnectionName, userTable, userIdColumn, userNameColumn, autoCreateTables: autoCreateTable);
    }

希望这可以帮助 :)

于 2013-07-27T09:22:39.470 回答