1

当我尝试访问网站管理工具 (WAT)(Visual Studio 中的项目-> ASP.NET 配置)时,出现以下错误

在调用“WebSecurity”类的任何其他 > 方法之前,您必须调用“WebSecurity.InitializeDatabaseConnection”方法。此调用应放在站点根目录下的 _AppStart.cshtml 文件中。

这是我的连接字符串:

<add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|Database1.mdf;User Instance=true" providerName="System.Data.SqlClient" />

我还启用了简单的会员资格

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

我的 roleshipprivider 配置看起来像这样

<roleManager enabled="true" defaultProvider="MySqlRoleProvider">
  <providers>
    <clear />
    <add connectionStringName="DefaultConnection" applicationName="/"
      name="MySqlRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData" />
  </providers>
</roleManager>

还有我的会员资格

 <membership defaultProvider="MyOwnSqlMembershipProvider">
  <providers>
    <clear/>
    <add connectionStringName="DefaultConnection" enablePasswordRetrieval="false"
      enablePasswordReset="true" requiresQuestionAndAnswer="false"
      requiresUniqueEmail="true" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6"
      minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
      name="MyOwnSqlMembershipProvider" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" />
  </providers>
</membership>

有人知道错误在哪里吗?

在此先感谢 Mateusz Urban

4

2 回答 2

3

您应该将下面的代码添加到Global.aspx.cs内部protected void Application_Start(),并且应该出现在任何其他注册之前的顶部。这样,它将始终Initialized在其他操作之前。

if (!WebSecurity.Initialized)
            WebSecurity.InitializeDatabaseConnection("DefaultConnection", 
"UserProfile", "UserId", "UserName", autoCreateTables: true);
于 2013-05-16T19:25:52.247 回答
1

您需要包含代码以实际初始化成员资格提供程序。_AppStart.cshtml 中的以下内容应该可以工作:

@{   
if (!WebSecurity.Initialized)
{
    WebSecurity.InitializeDatabaseConnection("dbContext", "Users", "Id", "Login", autoCreateTables: false); 
}
}
于 2013-05-16T19:13:56.413 回答