為什麼要寫這個教程呢?
主要是為了解決把網站部署在虛擬 WordPress 主機上的人,因為你根本不能去配置虛擬 WordPress 主機 所以,用下面的方法,可以實現不配置 IIS 而使老版本 IIS 執行 MVC 。
首先,給大家推薦 2 個 MVC 的學習好去處:
1 、重典 MVC 視訊教程:http://www.youku.com/playlist_show/id_2416830.html
2 、微軟官方 MVC 教程:http://www.asp.net/mvc/learn(英文,但是…我這樣沒過 4 級的都可以輕易看懂了…)
看本文的人必須要有 MVC 基礎,所以很多名詞我就不解釋了
在老版本的 IIS 中架設 MVC 有 1 個條件:必須安裝 Framwork 3.5,SP1 不是必須的。所以如果你的虛擬 WordPress 主機是 2.0 的,那就免談了。現在市面上一般都升級到 3.5 了
如果你不具備這個最簡單的條件,那你的站羣服務器也就根本不能使用 MVC 架構的網站了
好了,接下來介紹下我們要做的幾個步驟
1 、複製幾個缺失的執行庫到 bin 資料夾
老版本不能執行主要原因當然是因為缺失 dll 檔案啦,其中最重要的是 mvc 核心庫
前三個在 C:Program FilesMicrosoft ASP.NETASP.NET MVC 2 中
System.Web.Mvc.dll
System.Web.Mvc.xml
Microsoft.Web.Mvc.Build.dll
下面 2 個是 3.5 sp1 的動態連結庫,去有 sp1 的電腦上覆制下就可以了
System.Web.Routing.dll
System.Web.Abstractions.dll
2 、在根目錄新建 Default.aspx 頁面,並在後台寫入程式碼
老版本 IIS 會驗證檔案是否存在,所以必須新建一個頁面,然後在寫上程式碼就可以了
1 public partial class _Default : Page
2 {
3 public void Page_Load(object sender, System.EventArgs e)
4 {
5 HttpContext.Current.RewritePath(Request.ApplicationPath);
6 IHttpHandler httpHandler = new MvcHttpHandler();
7 httpHandler.ProcessRequest(HttpContext.Current);
8 }
9 }
10
3 、設定 Route 路由表
為了充分利用 mvc 的新特性,強烈建議你在建設網站的時候全部採用 controller[/action][/id].aspx 這樣的形式
有方括號代表可省略,但是不能只省略 action 而不省略 id(其實可以實現,但是有限制和注意點,我這裏先介紹基本的)
主引數就是 id,如果有多個 http 引數,就需要用顯示 GET 傳送了
controller/action/id.aspx?page=1
下面就是 Global.asax 檔案裏的 Route 設定
//預設匹配
routes.MapRoute(“NoAction”, “{controller}.aspx”, new { controller = “home”, action = “index”, id = “” });//無 Action 的匹配
routes.MapRoute(“NoID”, “{controller}/{action}.aspx”, new { controller = “home”, action = “index”, id = “” });//無 ID 的匹配
routes.MapRoute(“Default”, “{controller}/{action}/{id}.aspx”, new { controller = “home”, action = “index”, id = “” });//預設匹配
routes.MapRoute(“Root”, “”, new { controller = “home”, action = “index”, id = “” });//根目錄匹配
這樣配置後,別人訪問你的網站還是想以前的 asp.net 一樣,全部是以 aspx 為字尾名。
這樣配置後你的虛擬 WordPress 主機也就不會出問題了
OK,3 個步驟完成後把你的網站釋出到虛擬空間吧!一般不會有問題
本網站就是用 MVC 架構的,下面給個下載地址,是 Default 檔案和那 5 個庫檔案
注意一下,自己更改下 Default.aspx 和 Default.aspx.cs 檔案裏的名稱空間,其實不改也不會出問題