Asp.net会员WebSecurity.InitializeDatabaseConnection错误

时间:2013-04-20 18:49:57

标签: asp.net asp.net-membership

当我试图访问网站管理工具(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

2 个答案:

答案 0 :(得分:3)

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

if (!WebSecurity.Initialized)
            WebSecurity.InitializeDatabaseConnection("DefaultConnection", 
"UserProfile", "UserId", "UserName", autoCreateTables: true);

答案 1 :(得分:1)

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

@{   
if (!WebSecurity.Initialized)
{
    WebSecurity.InitializeDatabaseConnection("dbContext", "Users", "Id", "Login", autoCreateTables: false); 
}
}