我的计算机上正在开发一个ASP.NET站点。它有自己的sqlserver数据库。由于某种原因,成员资格提供者系统似乎为项目创建了两个应用程序记录。这会给我带来问题,因为会员系统为系统中的每个用户创建了两条记录,每条记录对应一条记录。为什么会发生这种情况?如何将其关闭?
这是一个问题的主要原因是我使用用户名来恢复每个新用户的membership ID,因此成员可以与我们为数据存储创建的其他表相关。
任何建议或参考将不胜感激。
由于
道格
答案 0 :(得分:7)
当您没有为成员资格提供程序的“applicationName”属性指定名称时,通常会发生这种情况。这将导致成员资格提供程序使用Web服务器的vroot路径。
在下面的示例中,您可以看到applicationName属性的默认值,如果您没有指定它:
<membership>
<providers>
<clear/>
<add name="AspNetSqlMembershipProvider"
type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="LocalSqlServer"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="true"
requiresUniqueEmail="false"
passwordFormat="Hashed"
maxInvalidPasswordAttempts="5"
minRequiredPasswordLength="7"
minRequiredNonalphanumericCharacters="1"
passwordAttemptWindow="10"
passwordStrengthRegularExpression=""
applicationName="/"
/>
</providers>
因此,如果您将应用程序从一个文件夹移动到另一个文件夹,则会在成员资格数据库中创建一个新应用程序。
解决此问题的方法是为“applicationName”属性命名。 如果您已经拥有要使用的成员资格数据,则可以将该属性命名为现有应用程序名称之一。它是“aspnet_Application”表的“ApplicationName”列。
ScottGu在这里有一篇好文章: