h這兩天在用asp.net mvc,感覺還行吧,與monorail很相近,覺得上手也比較快,功能上由於是ms嫡出,所以延續性較好,很多已有的資源都能夠用起來。但是就是在本子上安裝有點問題,主要是在iis與mvc架構上的相容性。
============================================================================
ASP.NET MVC架構靠ASP.NET Routing來將瀏覽器請求轉到控制器行為上。想要使用ASP.NET Routing的話,就必須在web伺服器端進行一些額外的配置步驟。IIS版本的不同、你程式的請求處理模組決定了需要哪些配置步驟。
這裡有不同版本的IIS配置的一個概要:
- IIS7.0 (整合模式) - 不需要針對ASP.NET Routing 進行特殊配置
- IIS 7.0(傳統模式) - 需要針對ASP.NET Routing進行一些特殊配置
- IIS 6.0和更低版本 - 需要針對ASP.NET Routing進行一些特殊配置
IIS最新的版本是7.0. Windows Server 2008裡面就包含了它。當然了,你也可以在除Home Basic之外的所有Vista版本上安裝IIS 7.0.
IIS 7.0支援兩種處理請求的模式,整合模式和傳統模式。在整合模式下,你就不需要作任何配置就可以使用ASP.NET Routing了,而在傳統模式下,就需要一些額外的配置。
微軟的Windows Server 2003裡含有IIS 6.0。使用2003系統,你可以將IIS 6.0 升級到 7.0.在IIS 6.0上,同樣需要一些額外的配置。
Microsoft Windows XP Professional 中安裝了IIS 5.1, 在5.1上也需要進行配置。
最後,Microsoft Windows 2000 和Microsoft Windows 2000 Professional 中安裝了IIS 5.0, 在5.0上也需要進行配置。
整合傳統模式
IIS 7.0 可以用2種不同的請求處理模式處理請求:整合模式和傳統模式。整合模式效能更好,功能也多一些。傳統模式則用來針對較早版本的IIS保持向後相容。
請求處理模式決定於程式池。通過設定程式的程式池,就可以設定該web程式所使用的處理模式。跟著以下步驟做:
1.開啟IIS程式
2.在 Connections 視窗裡,選中一個程式
3.在 Actions 視窗中,點擊 基本設定,開啟程式編輯對話方塊(圖一)
4.注意裡面程式池的選擇
預設情況下,IIS有2種程式池:DefaultAppPool 和Clasic .NET AppPool。如果選擇DefaultAppPool,那麼你的程式就是在整合模式下啟動並執行,如果選擇的是Classic .NET AppPool,那麼就是在傳統模式下啟動並執行。
圖一: 查看請求處理模式
注意,在這個對話方塊中,你是可以修改請求處理模式的。點擊“選擇”按鈕,然後修改該程式的程式池。要注意把ASP.NET程式從傳統模式改到整合模式會有些相容性的東西需要處理。下面這些文章裡可以找到更多相關資訊:
- Upgrading ASP.NET 1.1 to IIS 7.0 on Windows Vista and Windows Server 2008 -- http://learn.iis.net/page.aspx/270/upgrading-aspnet-11-to-iis7-on-windows-vista--windows-server-2008/
- ASP.NET Integration With IIS 7.0 - http://learn.iis.net/page.aspx/243/aspnet-integration-with-iis7/
如果一個ASP.NET 程式用的是DefaultAppPool,那就不需要作什麼配置就可以正常運行ASP.NET Routing。假如用的是Classic .NET AppPool的話就請接著往下看,你需要對它進行一些修改。
在老版本的IIS上使用ASP.NET MVC
如果你需要在IIS 7.0 之前的版本上使用ASP.NET MVC, 或者想在7.0上用傳統模式,那你有2種方法可以實現。
1,把route表修改為使用副檔名的方式。例如,用 Store.aspx/Details 來替代 Stroe/Details這個URL請求。
2,建一個名為 wildcard script. map(萬用字元指令碼轉向映射)的東西。這個東西可以讓你把所有的請求都轉到ASP.NET framework中去。
如果你沒有許可權進入您的web伺服器端(譬如你的ASP.NET MVC程式運行在網際網路服務提供者運營的伺服器上),那你就需要採用第一種方式。如果你不想改變你的URL的呈現方式,就必須進入伺服器端採用第二種方式。
下面我們將詳細地研究這2種方式。
給Route表添加副檔名
修改Global.aspx檔案中的路由表。Listing1中預設未修改的Global.aspx檔案配置了一個“Default”路由.
Listing 1 – Global.asax (unmodified)
Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
namespace MvcApplication1
{
public class GlobalApplication : System.Web.HttpApplication
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
}
protected void Application_Start()
{
RegisterRoutes(RouteTable.Routes);
}
}
}
通過Listing 1 中的路由配置,你可以轉向下面這樣的URL:
/Home/Index
/Product/Details/3
/Product
不幸的是,IIS較老版本中這樣的請求不會被傳到ASP.NET framework中。因此這些請求不會被轉到控制器上。例如,如果你在低視力輸入/home/index那麼就會看到圖二所示的錯誤提示頁面。
======================================================================
xp下的安裝要特別一點,因為iis5隻有一個網站。
1.
保證xp環境已經安裝有.net framework 3.5 sp1、asp.net mvc 1.0或2.0
2.
由於iis5.1隻有一個預設網站,因此先將預設網站的其他檔案放到其他位置,將專案檔拷貝到預設網站所在目錄(一般是:C:\Inetpub\wwwroot),修改相應的連接字串。
3.
以上做好之後,就要開始配置iis5.1。首先在預設網站上點擊右鍵選擇“屬性”-“主目錄”-“配置”-“映射”-“添加”選擇aspnet_isapi.dll(一般路徑:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727),然後副檔名填寫“.*”此時一定注意不要勾選“檢查檔案是否存在”最後確定即可。
好了,程式可以正常訪問了。