ASP.NET MVC在IIS6下部署的小技巧
通常在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頁
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。這裡去掉對靜態檔案的驗證是關鍵,這使得asp.net處理所有的請求)
5.點OK
6.允許ASP.NET 4.0擴充套件
7.content目錄是靜態資源放置的目錄,設定content目錄下請求直接由IIS處理以提高效能。右擊content,屬性
8.點選create,再點選configuration,移除Wildcard application maps下的內容。點選OK。這裡利用了IIS的一個bug,把目錄設定成虛擬目錄,刪除Wildcard application maps的設定,這樣這個虛擬目錄的請求就直接由IIS處理了。
9. 再點選Remove,把虛擬目錄恢復成普通目錄。這樣只有這個目錄下的檔案會受到IIS的“眷顧”
10.設定AppPool許可權。點選站點使用的AppPool的屬性,切換到Identity,選擇Local System。這是偷懶的設定方法,以避免出現應用程式本身對系統的訪問許可權不夠
11.設定匿名訪問許可權。右擊站點,選擇許可權。點選Add…,在彈出的對話方塊中輸入IUSR_XXX(XXX為機器名)。
點選OK,便可新增一個Internet Guest Account,保持預設的只讀許可權即可。
12.最後注意,如果是首次安裝.NET 4.0,不要忘了註冊
在深入理解ASP.NET MVC(2)中,討論過MVC框架的路由機制,其中提到“可以通過設定RouteCollection的RouteExistingFiles為true,使得路由不匹配靜態檔案(注意true是不匹配,這個命名和奇怪)。”因此,我們可以這樣設定,以使得MVC不對靜態檔案進行檢查,這樣又可以提高一點效能。最終請求會像下圖那樣被serve
本文轉自 netcorner 部落格園部落格,原文連結: http://www.cnblogs.com/netcorner/archive/2011/05/25/2911955.html ,如需轉載請自行聯絡原作者
相關文章
- 在ASP.NET Core MVC 2.2 中使用AutoMapperASP.NETMVCAPP
- AutoMapper在.Net(asp.net MVC)專案下的應用以及IDataReader轉List說明APPASP.NETMVC
- ASP.NET MVC下使用AngularJs語言(七):Cookie的使用ASP.NETMVCAngularJSCookie
- ASP.NET MVC路由ASP.NETMVC路由
- 【備忘】ASP.NET MVC 5 升級到 ASP.NET Core MVC 的部分變化ASP.NETMVC
- asp.net webform在Linux上部署--jexusASP.NETWebORMLinux
- 在Docker容器中執行ASP.NET MVC應用程式DockerASP.NETMVC
- ASP.NET MVC 反射例子ASP.NETMVC反射
- ASP.NET MVC下使用AngularJs語言(五):ng-selectedASP.NETMVCAngularJS
- ASP.NET MVC下使用AngularJs語言(一):Hello your nameASP.NETMVCAngularJS
- ASP.NET MVC下使用AngularJs語言(三):ng-optionsASP.NETMVCAngularJS
- ASP.NET MVC下使用AngularJs語言(四):$window.alertASP.NETMVCAngularJS
- ASP.NET MVC下使用AngularJs語言(八):顯示htmlASP.NETMVCAngularJSHTML
- MVC2.0專案部署在IIS Winserver2012MVCServer
- asp.net core mvc 分頁ASP.NETMVC
- ASP.Net MVC過濾器ASP.NETMVC過濾器
- ASP.NET MVC – 安全簡介ASP.NETMVC
- ASP.NET MVC – 模型簡介ASP.NETMVC模型
- 將”ListControl”引入ASP.NET MVCASP.NETMVC
- ASP.NET MVC下使用AngularJs語言(二):ng-click事件ASP.NETMVCAngularJS事件
- 講一下Asp.net core MVC2.1 裡面的 ApiContrASP.NETMVCAPI
- ASP.NET MVC三個重要的描述物件ASP.NETMVC物件
- 【IDEA小技巧】Tomcat部署 war和war exploded的區別IdeaTomcat
- 談下微信小程式的抓取技巧微信小程式
- Asp.Net Core WebAPI+PostgreSQL部署在Docker中ASP.NETWebAPISQLDocker
- azkaban在centos下的部署安裝CentOS
- ASP.NET MVC Razor檢視引擎ASP.NETMVC
- ASP.NET MVC技能體系圖ASP.NETMVC
- ASP.NET Core MVC 之模型(Model)ASP.NETMVC模型
- ASP.NET Core MVC 之路由(Routing)ASP.NETMVC路由
- asp.net mvc 錯誤頁面ASP.NETMVC
- ASP.NET MVC – 檢視簡介ASP.NETMVC
- ASP.NET + MVC5 入門完整教程三 (上) --- 第一個 MVC 專案_lingshuangcanxue-CSDN 部落格_asp.net mvcASP.NETMVCGC
- ASP.NET MVC隨想錄——鋒利的KATANAASP.NETMVC
- ASP.NET MVC獲取上傳的路徑ASP.NETMVC
- Asp.net MVC 4 模型的資料註釋ASP.NETMVC模型
- ASP.NET MVC下使用AngularJs語言(六):獲取下拉選單的value和TextASP.NETMVCAngularJS
- 微信掃碼支付(Asp.Net MVC)ASP.NETMVC
- ASP.NET MVC 匯入Excel檔案ASP.NETMVCExcel