天天看點

IIS6下部署ASP.NET MVC應用程式

通常在IIS6下部署ASP.NET MVC應用程式的時候,都是直接設定把所有請求都交由ASP.NET的ISAPI處理。MVC是基于ASP.NET的,架構預設對于任何請求都會優先檢查實體路徑是否存在實體檔案,如果存在的話就不通過MVC的路由機制,否則才走路由。

是以,如果在不考慮控制靜态資源權限的情況下,可以設定靜态資源不通過ASP.NET的ISAPI,而直接由IIS處理,通過這種方式提升一些性能。本文圍繞這個主題,詳解部署過程。

0.在設計MVC網站的時候,把靜态資源統一放在一個檔案夾下,建議目錄結構使用小寫字母

1.把web應用程式釋出到某個路徑下(略)(順便提一句,MVC2功能上比MVC3弱一些,用到的元件很少,可以直接私有部署System.Web.Mvc;但是MVC3因為功能增加,而且引入了Razor引擎,依賴的元件增多,建議在部署的時候直接安裝MVC3)

2.建立一個web站點(略)

3.右擊建立的web站點,選擇屬性,切換到Home Directory頁

IIS6下部署ASP.NET MVC應用程式

4.點選Configuration,在Wildcard application maps中,點選Insert,添加C:WINDOWSMicrosoft.NETFrameworkv4.0.30319aspnet_isapi.dll,取消Verify that file existsg的勾選。(如果使用MVC2的話,可以到2.0下去找這個dll。這裡去掉對靜态檔案的驗證是關鍵,這使得asp.net處理所有的請求)

IIS6下部署ASP.NET MVC應用程式

5.點OK

IIS6下部署ASP.NET MVC應用程式

6.允許ASP.NET 4.0擴充

IIS6下部署ASP.NET MVC應用程式

7.content目錄是靜态資源放置的目錄,設定content目錄下請求直接由IIS處理以提高性能。右擊content,屬性

IIS6下部署ASP.NET MVC應用程式

8.點選create,再點選configuration,移除Wildcard application maps下的内容。點選OK。這裡利用了IIS的一個bug,把目錄設定成虛拟目錄,删除Wildcard application maps的設定,這樣這個虛拟目錄的請求就直接由IIS處理了。

IIS6下部署ASP.NET MVC應用程式

9. 再點選Remove,把虛拟目錄恢複成普通目錄。這樣隻有這個目錄下的檔案會受到IIS的“眷顧”

IIS6下部署ASP.NET MVC應用程式

10.設定AppPool權限。點選站點使用的AppPool的屬性,切換到Identity,選擇Local System。這是偷懶的設定方法,以避免出現應用程式本身對系統的通路權限不夠

IIS6下部署ASP.NET MVC應用程式

11.設定匿名通路權限。右擊站點,選擇權限。點選Add…,在彈出的對話框中輸入IUSR_XXX(XXX為機器名)。

IIS6下部署ASP.NET MVC應用程式
IIS6下部署ASP.NET MVC應用程式
IIS6下部署ASP.NET MVC應用程式

繼續閱讀