我的计算机上有一个正在开发的 ASP.NET 站点。它有自己的 sqlserver 数据库。由于某种原因,会员提供者系统似乎为项目创建了两个应用程序记录。这给我带来了问题,因为会员系统正在为系统中的每个用户创建两条记录,一条用于每个应用程序记录。为什么会发生这种情况,我该如何关闭它?
这是一个问题的主要原因是我使用用户名来恢复每个新用户的membershipID,因此成员可以与我们为数据存储创建的其他表相关联。
任何建议或参考将不胜感激。
谢谢
道格
我的计算机上有一个正在开发的 ASP.NET 站点。它有自己的 sqlserver 数据库。由于某种原因,会员提供者系统似乎为项目创建了两个应用程序记录。这给我带来了问题,因为会员系统正在为系统中的每个用户创建两条记录,一条用于每个应用程序记录。为什么会发生这种情况,我该如何关闭它?
这是一个问题的主要原因是我使用用户名来恢复每个新用户的membershipID,因此成员可以与我们为数据存储创建的其他表相关联。
任何建议或参考将不胜感激。
谢谢
道格
当您没有为 Membership 提供程序的“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 在这里发表了一篇很好的文章:
配置 ASP.NET 2.0 Membership 和其他 Providers 时始终设置“applicationName”属性