-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

應用程序通常不知道或關心來自哪個「項目」。所以這種情況可能不會出現。

如果你的應用程序是不是在根目錄,然後將其重命名......