-1

我只是想知道applicationName属性如何实际工作?

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

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

编辑1:

例如:我创建了一个项目的第一和部署。稍后我创建另一个项目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> 

EDIT 3:

产生两个应用程序之后(即,一个为根,并且另一个作为子应用程序)和两者都具有相同的applicationName设置为/,两者应用程序中使用相同的ApplicationID。这意味着斜杠与网站域树无关。我的困惑已经得到解答。所以...为什么Visual Studio默认将它设置为/(这会让我感到困惑)?

编辑4:

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

alt text

编辑5:

从这个article,我会总结:

  1. 如果我们删除的web.config applicationName属性两个应用程序,生成的应用程序名称在数据库中的根将是“/”,并且为子应用程序在数据库中生成的ApplicationName将为“/ subappvirtualdir”。
  2. 如果我们将applicationName的默认值设置为两个应用程序的默认值“/”,则根应用程序和子应用程序都将获得与数据库中生成的“/”相同的ApplicatonName。
  3. 如果我们将两个应用程序的applicationName更改为“任意名称”,则数据库中生成的ApplicationName将设置为“任何名称都适用”这两个应用程序。

感谢Rockin上面的链接!

+1

当你建立一个大型的应用程序,你的DBA将设置这个名字的时候,他/她创建的数据库,你将建立项目。你的数据库本身并不知道它被插入什么项目。如果它足够大,请在创建数据库后立即更改名称。再次,请记住,甚至认为你“可以”在VS中创建数据库,并不总是意味着你“应该”,因为它可以通过aspnet_regsql.exe独立完成 – 2010-12-20 05:53:38

+1

我编辑了我的答案。 – 2010-12-20 06:09:34

+0

@rockin,你知道/作为applicationName的含义是什么吗?因为我注意到它与网站域结构无关。 – xport 2010-12-20 07:21:10

回答

2

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

请记住,因为您可以使用Aspnet_regsql.exe在您的数据库中创建完全独立于Visual Studio的ASP.NET成员资格计划,所以数据库不能仅仅自行修复应用程序名称。创建数据库后,您当然可以立即编辑数据库中的应用程序名称,那么它就无关紧要了。

编辑

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

+0

感谢您的链接。我获得了本质。 – xport 2010-12-20 08:08:00

2

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

如果你的应用程序是不是在根目录,然后将其重命名......