1

我的计算机上有一个正在开发的 ASP.NET 站点。它有自己的 sqlserver 数据库。由于某种原因,会员提供者系统似乎为项目创建了两个应用程序记录。这给我带来了问题,因为会员系统正在为系统中的每个用户创建两条记录,一条用于每个应用程序记录。为什么会发生这种情况,我该如何关闭它?

这是一个问题的主要原因是我使用用户名来恢复每个新用户的membershipID,因此成员可以与我们为数据存储创建的其他表相关联。

任何建议或参考将不胜感激。

谢谢

道格

4

1 回答 1

7

当您没有为 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”属性

于 2009-06-23T21:32:27.583 回答