建立了一個ASP MVC project,實現了簡單的login功能。當嘗試部署到IIS的時候,出現問題:
除了default.aspx之外,其他頁面都無法打開。
google了一下,發現原因是:
ASP.NET MVC框架靠ASP.NET Routing來將瀏覽器請求轉到控制器行爲上。
也就是說,當輸入網址後,產生的瀏覽器請求,是不能被ASP MVC框架直接處理的,
需要ASP.NET Routing將其轉化成控制器(controller)行爲,才能找到相應的頁面。
然而不幸的是,並不是所有的IIS版本都支持ASP.NET Routing:
- IIS7.0 (集成模式) - 支持ASP.NET Routing
- IIS 7.0(經典模式) - 需要針對ASP.NET Routing進行一些特殊配置
- IIS 6.0和更低版本 - 需要針對ASP.NET Routing進行一些特殊配置
<http://www.cnblogs.com/deafcat/archive/2009/03/03/1401966.html>
我用的是IIS 5.1,針對它的配置如下:
1) 在IIS應用程序配置中新增.mvc的映射方法:
IIS站點屬性=>目錄=>配置=>映射=>添加=>可執行文件C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/aspnet_isapi.dll,擴展名爲:.mvc
動作可選全部,也可設定爲:GET,HEAD,POST,DEBUG 同時必須選中腳本引擎且不能選擇檢查文件是否存在選項。
2) 修改MvcApplication類的RegisterRoutes方法:
將{controller}/{action}/{id}修改爲{controller}.mvc/{action}/{id}。
示例代碼:
這樣,在Url裏會有.mvc的後綴,對於這個擴展名,由於我們添加了對.mvc要用aspnet_isapi.dll處理的映射,
那麼ASP.NET Routing可以將這個瀏覽器請求轉換成相應的controller行爲。