ASP.NET成员资格 - 2个应用程序ID记录

时间:2009-06-23 20:25:45

标签: asp.net membership

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

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

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

由于

道格

1 个答案:

答案 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在这里有一篇好文章:

  

Always set the "applicationName" property when configuring ASP.NET 2.0 Membership and other Providers