applicationName属性如何实际工作?

时间:2010-12-20 05:39:31

标签: asp.net web-config asp.net-membership asp.net-profiles application-name

我只是想知道

  

为什么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选择这个令人困惑的名称而不是项目名称?

alt text

编辑5:

从这个article,我将做总结:

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

2 个答案:

答案 0 :(得分:2)

我会说默认名称是/,因为您的数据库不应该知道您的应用程序。因此它不知道项目名称。他们必须有某种起点,因为他们不介意读者,所以你得到/

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

修改

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

答案 1 :(得分:2)

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

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