-1

我只是想知道

为什么 asp.net 团队选择 / 作为 Membership Role 应用程序名称的默认值,而不是有意义的项目名称?

此外,该应用程序可能不会部署为根应用程序。这意味着 / 不再合适。

编辑1:

例如:我先创建一个项目A并部署它。后来我创建了另一个项目 B 并部署它。如果两个项目都使用默认值,它们仍然可以工作,但很难知道每个项目都有哪些用户。

对我来说,最好将默认设置为项目名称。

编辑2:

我说的是 Visual Studio 在 Web.config 中生成的 applicationName 属性。为什么不使用项目名称而不是 / 默认情况下?

<membership>
      <providers>
        <clear />
        <add name="AspNetSqlMembershipProvider"
             type="System.Web.Security.SqlMembershipProvider"
             connectionStringName="ApplicationServices"
             enablePasswordRetrieval="false"
             enablePasswordReset="true"
             requiresQuestionAndAnswer="false"
             requiresUniqueEmail="false"
             maxInvalidPasswordAttempts="5"
             minRequiredPasswordLength="6"
             minRequiredNonalphanumericCharacters="0"
             passwordAttemptWindow="10"
             applicationName="/" />
      </providers>
    </membership>
    <profile>
      <providers>
        <clear />
        <add name="AspNetSqlProfileProvider"
             type="System.Web.Profile.SqlProfileProvider"
             connectionStringName="ApplicationServices"
             applicationName="/" />
      </providers>
    </profile>
    <roleManager enabled="false">
      <providers>
        <clear />
        <add name="AspNetSqlRoleProvider"
             type="System.Web.Security.SqlRoleProvider"
             connectionStringName="ApplicationServices"
             applicationName="/" />
        <add name="AspNetWindowsTokenRoleProvider"
             type="System.Web.Security.WindowsTokenRoleProvider"
             applicationName="/" />
      </providers>

</roleManager>

编辑 3:

创建两个应用程序(即,一个作为根应用程序,另一个作为子应用程序)并且都将相同的 applicationName 设置为 / 后,两个应用程序使用相同的 ApplicationID。这意味着斜线与站点域树无关。我的困惑已经得到解答。那么...为什么 Visual Studio 默认将其设置为 / (这让我感到困惑)?

编辑4:

我有两个应用程序。一个作为根应用程序,另一个作为前者下的子应用程序。两者都使用 applicationName = "/"。我在数据库中得到如下结果: 那么 / 的含义是什么?如果没有意义,为什么VS选择了这个令人困惑的名称而不是项目名称?

替代文字

编辑 5:

从这篇文章中,我将做一个总结:

  1. 如果我们从 web.config 中删除两个应用程序的 applicationName 属性,则在数据库中为 root 生成的 ApplicationName 将为“/”,而在数据库中为子应用程序生成的 ApplicationName 将为“/subappvirtualdir”。
  2. 如果我们将两个应用程序的 applicationName 保留为其默认值“/”,则根应用程序和子应用程序都将获得数据库中生成的相同 ApplicatonName 的“/”。
  3. 如果我们将两个应用程序的 applicationName 更改为“您想要的任何名称”,那么数据库中生成的 ApplicationName 将为两个应用程序设置为“您想要的任何名称”。

感谢 Rockin 提供上面的链接!

4

2 回答 2

2

我会说默认名称是/因为您的数据库不应该知道有关您的应用程序的任何信息。因此它不知道项目名称。他们必须有某种起点,而且由于他们不是读心者,你会得到一个/.

请记住,由于您可以使用Aspnet_regsql.exe在完全独立于 Visual Studio 的数据库中创建 ASP.NET 成员资格方案,因此数据库不能仅靠它自己“修复”应用程序名称。您当然可以在创建数据库后立即在数据库中编辑应用程序名称,然后就不再重要了。

编辑

我在您的编辑中看到您正在谈论 web.config 中的 applicationName,而不是数据库中的那个。请阅读这篇博客文章(不是我的)以获得更多见解
http://dotnettipoftheday.org/tips/applicationName_attribute.aspx

于 2010-12-20T05:41:15.370 回答
2

应用程序通常不知道或关心它来自哪个“项目”。因此,可能不会出现这种情况。

如果您的应用不在根目录下,请重命名它...

于 2010-12-20T05:42:05.560 回答