ASP.NET MVC在IIS6下部署技巧
通常在IIS6下部署ASP.NET MVC應(yīng)用程序的時候,都是直接設(shè)置把所有請求都交由ASP.NET的ISAPI處理。MVC是基于ASP.NET的,框架默認(rèn)對于任何請求都會優(yōu)先檢查物理路徑是否存在物理文件,如果存在的話就不通過MVC的路由機制,否則才走路由。
因此,如果在不考慮控制靜態(tài)資源權(quán)限的情況下,可以設(shè)置靜態(tài)資源不通過ASP.NET的ISAPI,而直接由IIS處理,通過這種方式提升一些性能。本文圍繞這個主題,詳解部署過程。
0.在設(shè)計MVC網(wǎng)站的時候,把靜態(tài)資源統(tǒng)一放在一個文件夾下,建議目錄結(jié)構(gòu)使用小寫字母
1.把web應(yīng)用程序發(fā)布到某個路徑下(略)(順便提一句,MVC2功能上比MVC3弱一些,用到的組件很少,可以直接私有部署System.Web.Mvc;但是MVC3因為功能增加,而且引入了Razor引擎,依賴的組件增多,建議在部署的時候直接安裝MVC3)
2.創(chuàng)建一個web站點(略)
3.右擊創(chuàng)建的web站點,選擇屬性,切換到Home Directory頁
4.點擊Configuration,在Wildcard application maps中,點擊Insert,添加C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll,取消Verify that file existsg的勾選。(如果使用MVC2的話,可以到2.0下去找這個dll。這里去掉對靜態(tài)文件的驗證是關(guān)鍵,這使得asp.net處理所有的請求)
5.點OK
6.允許ASP.NET 4.0擴展
7.content目錄是靜態(tài)資源放置的目錄,設(shè)置content目錄下請求直接由IIS處理以提高性能。右擊content,屬性
8.點擊create,再點擊configuration,移除Wildcard application maps下的內(nèi)容。點擊OK。這里利用了IIS的一個bug,把目錄設(shè)置成虛擬目錄,刪除Wildcard application maps的設(shè)置,這樣這個虛擬目錄的請求就直接由IIS處理了。
9. 再點擊Remove,把虛擬目錄恢復(fù)成普通目錄。這樣只有這個目錄下的文件會受到IIS的“眷顧”
10.設(shè)置AppPool權(quán)限。點擊站點使用的AppPool的屬性,切換到Identity,選擇Local System。這是偷懶的設(shè)置方法,以避免出現(xiàn)應(yīng)用程序本身對系統(tǒng)的訪問權(quán)限不夠
11.設(shè)置匿名訪問權(quán)限。右擊站點,選擇權(quán)限。點擊Add…,在彈出的對話框中輸入IUSR_XXX(XXX為機器名)。
點擊OK,便可添加一個Internet Guest Account,保持默認(rèn)的只讀權(quán)限即可。
12.最后注意,如果是首次安裝.NET 4.0,不要忘了注冊
在深入理解ASP.NET MVC(2)中,討論過MVC框架的路由機制,其中提到“可以通過設(shè)置RouteCollection的RouteExistingFiles為true,使得路由不匹配靜態(tài)文件(注意true是不匹配,這個命名和奇怪)。”因此,我們可以這樣設(shè)置,以使得MVC不對靜態(tài)文件進(jìn)行檢查,這樣又可以提高一點性能。最終請求會像下圖那樣被serve
關(guān)鍵詞:ASP.NET,MVC,IIS6
閱讀本文后您有什么感想? 已有 人給出評價!
- 0
- 0
- 0
- 0
- 0
- 0