2010年2月5日 星期五

ASP.NET 4.0 New Feature : All New Web Project Style (新ASP.NET網站專案樣板架構)

基本上ASP.NET 4.0在設計上整個專案類型比起ASP.NET 3.5 就整個外觀或是型式上,亞當斯覺得整體上改的蠻多的,而且是改的比較完善,這邊先來看看ASP.NET 4.0設計上時,比起3.5版的不同。首先是建立專案時的畫面,預設.NET Framework 4:

image

當建立一個實際的ASP.NET專案,再來看看整個專案的架構,真的是有夠完整的,不僅把預設的驗證方式改為From驗證模式,甚至是預設就使用MasterPage,還有script以及css的預設支援。

image

我們來看看上圖的整個架構,有Account資料夾,理面有Form驗證所需要的所有基本程式網頁,包含登入網頁、更改密碼網頁、或是註冊網頁…等等。有Script資料夾,包含支援JQuery的script檔;有Site.master預設就啟用主版頁面的設計…真的是完整多了。

除了預設相對3.5完整的架構之外,我們來看看它的web.config多了哪些預設的設定:

  • 首先,連線字串預設式啟用SQL EXPRESS的連線

<connectionStrings>
  <add name="ApplicationServices"
       connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true"
       providerName="System.Data.SqlClient" />
</connectionStrings>

  • 指定目標執行版本為4.0

<compilation debug="false" targetFramework="4.0" />

  • 預設啟用Form驗證方式

<authentication mode="Forms">
  <forms loginUrl="~/Account/Login.aspx" timeout="2880" />
</authentication>

  • 會員機制、角色管理以及個人化相關的config設定,在ASP.NET 4.0 已經設定在每一個獨立的網站專案中,而不是像之前3.5前的版本都是設定在machine.config。簡單來說,要把網站的會員機制、角色管理以及個人化設定異動的話,只需要直接修改web.config即可。

<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>

  • 最後一個是新的模組Module設定:runAllManagedModulesForAllRequests

<system.webServer>
   <modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>

  • 而在Account下有一個針對這個資料夾所套用的web.config,主要是控管網站的安全性,在這資料夾中拒絕匿名存取者,允許所有人可以直接存取Register.aspx。

    <location path="Register.aspx">
      <system.web>
        <authorization>
          <allow users="*"/>
        </authorization>
      </system.web>
    </location>

    <system.web>
      <authorization>
        <deny users="?"/>
      </authorization>
    </system.web>

  • 值得注意的是,以往在ASP.NET 3.5中web.config有關AJAX的設定,在ASP.NET 4.0並不再是設定在專案所隸屬的web.config,而是設定在ASP.NET 4.0專屬的config目錄機器層級的組態設定檔中,換言之就是 C:\Windows\Microsoft.NET\Framework\v4.0.xxxxx\Config\machine.config 中。看到這部分各位有沒有想到什麼? 沒錯,以往ASP.NET 2.0 或是 ASP.NET 3.5都是套用同樣 C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG 下的設定檔,而ASP.NET 4.0 則是有專屬版本的config唷。

最後來看看預設網頁Default.aspx執行起來的畫面,這是自動套用主版頁面後的執行畫面,還蠻有感覺的。

image

沒有留言: