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