基本上ASP.NET 4.0在設計上整個專案類型比起ASP.NET 3.5 就整個外觀或是型式上,亞當斯覺得整體上改的蠻多的,而且是改的比較完善,這邊先來看看ASP.NET 4.0設計上時,比起3.5版的不同。首先是建立專案時的畫面,預設.NET Framework 4:
當建立一個實際的ASP.NET專案,再來看看整個專案的架構,真的是有夠完整的,不僅把預設的驗證方式改為From驗證模式,甚至是預設就使用MasterPage,還有script以及css的預設支援。
我們來看看上圖的整個架構,有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執行起來的畫面,這是自動套用主版頁面後的執行畫面,還蠻有感覺的。
沒有留言:
張貼留言