我只是想知道
为什么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:
从这个article,我将做总结:
感谢Rockin上面的链接!
答案 0 :(得分:2)
我会说默认名称是/
,因为您的数据库不应该知道您的应用程序。因此它不知道项目名称。他们必须有某种起点,因为他们不介意读者,所以你得到/
。
请记住,由于您可以使用Aspnet_regsql.exe在数据库中完全独立于Visual Studio创建ASP.NET成员资格方案,因此数据库不能仅仅“修复”应用程序名称。您当然可以在创建数据库后立即在数据库中编辑应用程序名称,然后再无关紧要了。
我在编辑中看到你在谈论web.config中的applicationName,而不是数据库中的applicationName。请阅读这篇博客文章(不是我的)以获得更多见解 http://dotnettipoftheday.org/tips/applicationName_attribute.aspx
答案 1 :(得分:2)
应用程序通常不知道或关心它来自哪个“项目”。因此,上下文可能不会出现。
如果您的应用不在根目录,请重命名...