【问题标题】:ASP.NET membership - 2 application ID recordsASP.NET 成员资格 - 2 个应用程序 ID 记录
【发布时间】:2009-06-23 20:25:44
【问题描述】:

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

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

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

谢谢

道格

【问题讨论】:

    标签: asp.net membership


    【解决方案1】:

    当您没有为 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 在这里发表了一篇很好的文章:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-23
      • 1970-01-01
      • 2010-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多