環境:MVC3.0,IIS7
Mvc3.0的部署除像正常部署aspx程序一樣外,另外還需要注意的幾點:
1. 安裝MVC3.0
-
確保服務器上安裝了MVC3.0,默認版本是“3.0.20105.0”
2. MVC版本一致性問題(重要)
此類問題會引起一堆譬如CS1705,CS0433類的問題,我就是碰到了這種問題,所以就這個問題詳細說明一下:
此問題需要查看你本機開發時用的mvc類庫版本與服務器上所安裝的mvc類庫版本是否一致,即使大版本號都是3.0,而小版本號不一致也會導致此類問題
MVC的版本號可通過控制面版上“Microsoft ASP.NET MVC 3”一行后面的版本來確定,我本機上的版本是“3.0.50813.0”,而服務器上的版本卻是“3.0.20105.0”,因此就出現了版本不一致的問題
默認安裝MVC3后的版本是“3.0.20105.0”,而版本“3.0.50813.0”是Microsoft針對MVC安全性發布的一個更新補丁包,如果你是剛裝的mvc,一般情況下“3.0.20105.0”,過段時間通過windows的自動更新可能就會變成“3.0.50813.0”,所以這個版本問題不容易被發現
針對MVC的安全補丁說明:MS14-059 (KB2990942)
補丁地址: http://www.microsoft.com/zh-CN/download/details.aspx?id=44533
此補丁是一個集合補丁,里面包含了對 MVC 2.0、MVC 3.0、MVC 4.0、MVC 5.0 和 MVC 5.1的補丁
如果只需針對MVC3.0打補丁,則只需通過選擇更新相應的補丁包即可,針對MVC3.0補丁包的名稱其實為:KB2993937
由此即可解決版本問題
其它網上總結的也需要注意的,我沒有碰到或者是有些配置本已集成了的:
1. 設置System.Web.Mvc.dll復制到本地(重要)
在VS的引用中右鍵System.Web.Mvc.dll,選擇“屬性”->“復制到本地”選擇true,重新編譯並發布
其實就是要帶着本機的System.Web.Mvc.dll發布
我沒有這么做,網站仍然可以訪問,不過這條應該很重要,建議發布mvc時選擇這項
2. 設置“ISAPI和CGI限制”
左鍵點擊IIS根結節,在右側的功能區選擇“ISAPI和CGI限制”,點開,將ASP.NET v4.0.30319設置為允許,如果是64位系統應該有兩條記錄,一條是64位的,一條是32位的,反正我的都是不允許也照樣可以
3. 檢查“處理程序映射”
檢查“處理程序映射”,看里面是不是有以下這三項:
ExtensionlessUrlHandler-Integrated-4.0
ExtensionlessUrlHandler-ISAPI-4.0_32bit
ExtensionlessUrlHandler-ISAPI-4.0_64bit
如果缺少請在命令行中運行:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i
我的默認是有這三項的
4. 設置“處理程序映射”
左鍵點擊網站,在右側功能區選擇“處理程序映射”,點開,在右側點“添加通配符腳本映射”,添加如下內容:
請求路徑:*
可執行文件:C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll
名稱:可自己決定,一般填mvc3即可
我的這項也沒有設置,網站仍然可以使用