IIS 8.0 使用 ASP.NET 3.5 和 ASP.NET 4.5
by Won Yoo
相容性
版本 | 備註 |
---|---|
IIS 8.0 | IIS 8.0 支援 ASP.NET 3.5 和 ASP.NET 4.5。 |
IIS 7.5 | IIS 7.5 支援 ASP.NET 3.5 和 ASP.NET 4.5。 |
IIS 7.0 | IIS 7.0 支援 ASP.NET 3.5 和 ASP.NET 4.5。 |
問題
Windows Server 2012 預設包含 .NET Framework 4.5,以及 .NET 3.5 Framework 的選擇性安裝。 開發人員通常需要跨多個 .NET Framework 版本執行混合式 Web 應用程式。
解決方案
Windows Server 2012 上的 IIS 8.0 會在 Windows Server 2012 支援的所有 .NET Framework 版本上執行 ASP.NET 應用程式。 這表示 ASP.NET 應用程式可以使用 .NET Framework 3.5 或 .NET Framework 4.5 在 IIS 8.0 上執行。 IIS 8.0 裝載不同應用程式集區中 .NET Framework 的版本,因此允許多個 ASP.NET 具有不同 .NET Framework 版本的應用程式同時在 Windows Server 2012 上執行。
IIS 8.0 也支援使用圖形化 IIS 管理員工具和 IIS 命令行管理工具來管理 ASP.NET 3.5 和 ASP.NET 4.5 應用程式。 如需詳細資訊,請參閱 IIS 8.0 ASP.NET 組態管理 一文。
逐步指示
必要條件
- IIS 安裝在 Windows Server 2012 上。 若要深入瞭解如何安裝 IIS 8,請參閱 在 Windows Server 2012 上安裝 IIS 8。
設定支援 ASP.NET 3.5 和 ASP.NET 4.5 的 IIS 8.0
在 Windows Server 2012 中,操作系統會以原生方式辨識 .NET Framework 3.5 和 .NET Framework 4.5。 這表示UI型和命令行驅動設定都可以用來開啟 .NET Framework 這兩個版本,以及啟用兩個版本與 IIS 8.0 的 ASP.NET 整合。
在本逐步解說中,我們將使用 Windows Server 2012 Server 中的新 伺服器管理員 UI 來示範在 IIS 8.0 上啟用 ASP.NET 3.5 和 ASP.NET 4.5。
當您第一次登入新的 Windows Server 2012 計算機時,將會顯示新的 伺服器管理員 UI。 按兩下 [新增角色 ],如下所示:
在 [新增角色及功能精靈] 的第一個畫面上,按 [下一步]。 這會顯示您選取所需安裝類型的頁面。 選擇角色型或功能型安裝,如下所示:
按 [ 下一步]。 精靈的下一個畫面會要求您選擇您要設定的伺服器。
在下一個精靈步驟中,系統會要求您選取一或多個伺服器角色。 在 [ 角色] 清單中向下卷動,並確定核取 [Web 伺服器 (IIS)] 複選框,如下所示:
按 [下一步 ] 繼續進行下一個步驟,這可讓您選取要安裝在伺服器上的其他特定功能。 再次按 [下一步 ],然後繼續進行下一個步驟。
下一個精靈步驟會顯示網頁伺服器 (IIS) 角色的一些簡介資訊。 再次按 [下一步 ],然後繼續進行下一個步驟。 現在,您應該位於看起來如下的精靈步驟:
請注意,因為您稍早選取 了網頁伺服器 (IIS) 伺服器角色,因此已開啟 IIS 的一些預設子功能。 不過,我們想要讓 ASP.NET 3.5 和 ASP.NET 4.5 在 IIS 8.0 上執行,因此我們需要啟用一些額外的 IIS 相關功能。 在 [角色服務] 清單中向下卷動,直到應用程式開發節點顯示為止。 此節點一開始會折疊,按兩下節點並展開它,使其子系顯示:
[ 應用程式開發 ] 節點是我們啟用與 IIS ASP.NET 整合的位置。 請注意,功能清單中的一些複選框名稱類似。 本逐步解說感興趣的複選框組如下:
- ASP.NET 3. 5 - 此選項可讓 ASP.NET 3.5 在 IIS 8.0 上執行。 請注意,使用 Windows Server 2012 時,.NET Framework 3.5 無法作為基底 OS 映射的一部分使用。 相反地,承載會從因特網下載,而您需要連線到因特網。
- ASP.NET 4.5 - 此選項可讓 ASP.NET 4.5 在 IIS 8.0 上執行。
首先, 按兩下 [ASP.NET 3.5 ] 複選框。 當您這樣做時,其他對話框隨即出現,如下所示:
由於 ASP.NET 3.5 已整合到 Windows Server 2012 安裝程式中,Windows Server 2012 知道在 IIS 8.0 上啟用 ASP.NET 3.5 所需的所有相關相依性。 此快顯對話框只會顯示會自動提取並安裝的內容。 由於我們確實想要啟用 ASP.NET 3.5,請按兩下 [ 新增必要功能]。
接下來,按兩下 [角色服務] 功能清單中的 [ASP.NET 4.5] 複選框。 按兩個 ASP.NET 相關複選框的最終結果如下所示:
即使您只直接選取 ASP.NET 3.5 和 ASP.NET 4.5 功能,精靈還是會自動開啟一些其他專案。 這會自動完成,讓開發人員不需要明確選擇 Windows Server 2012 上 ASP.NET 的「元件」所需的各種元件部分。 此時,按 [下一步 ] 接受變更。
此時,按兩下 [安裝] 接受變更,並在 Windows Server 2012 上安裝完整的 ASP.NET 支援。
此時,您可以按兩下 [ 關閉 ] 並結束精靈。
探索 IIS 8.0 安裝
安裝 IIS 8.0 和 ASP.NET 整合之後,我們即可查看 IIS 8.0 的基本 ASP.NET 使用量。
從 Windows [開始] 功能表 選取 [所有程式],然後展開 [管理員 工具] 功能表。 在產生的清單中,尋找 網際網路資訊服務 (IIS) 管理員,然後選取它以啟動圖形化 IIS 管理工具:
啟動 IIS 管理員之後,請展開左側視窗中的伺服器節點, 讓 [應用程式 集區] 節點和 [月臺 ] 節點同時顯示。 當您這樣做時,IIS 管理員會快顯對話框,詢問您是否要與最新的 Web 平台元件保持連線。 在此逐步解說中,您可以按兩下 [ 否]。 此時,IIS 管理員看起來像下圖:
當 IIS 8.0 同時啟用 ASP.NET 3.5 和 ASP.NET 4.5 時,您可以看到預設會建立六個不同的應用程式集區。 IIS 8.0 有四個應用程式是新的,另外兩個應用程式集區已從先前的 Windows 版本進行。
- 請注意,雖然 .NET Framework 版本數據行會顯示 .NET Framework 版本的 “v2.0” 和 “v4.0”,但這些相當於 ASP.NET 3.5 和 ASP.NET 4.5。 由於應用程式集區系結至 .NET Framework 版本的內部,寫入組態的實際版本名稱(因此顯示在工具中)對應至原始 .NET Framework 檔案版本。
- 傳統 .NET AppPool 和 DefaultAppPool 存在於舊版 Windows 中,因此會繼續為 IIS 8.0 建立。 不過請注意,由於 .NET Framework 4.5 是 Windows Server 2012 使用的預設 .NET Framework,IIS 8.0 上的 “DefaultAppPool” 也會預設為使用較新版本的 .NET Framework。
- 其他四個應用程式集區是 Windows Server 2012 的新功能。 執行 .NET Framework 3.5 的應用程式集區有兩個(.NET v2.0 和 .NET v2.0 傳統版),還有兩個執行 .NET Framework 4.5 的應用程式集區(.NET Framework 4.5 和 .NET Framework 4.5 傳統版)。
- 「傳統」和「非傳統」應用程式集區之間的差異在於每個應用程式集區類型支援的受控管線模式。 結束於「傳統」的兩個應用程式集區支援舊版 Windows Server 2003 時代傳統管線模式,ASP.NET,而其他兩個應用程式集區則使用較新的整合管線模式,用於 Vista/IIS7.0 中引進 ASP.NET 的較新的整合管線模式。
IIS 的預設安裝一律設定為在埠 80 上接聽 HTTP 要求的「默認網站」。 向下切入「預設網站」,以查看其默認支援的 ASP.NET 版本。 以滑鼠右鍵按兩下 [默認網站],然後選取 [管理網站],然後選取 [進階 設定,如下所示:
[進階 設定] 對話框隨即出現,其中顯示用來執行「默認網站」的應用程式集區(以及其他專案)。 如下圖所示,「默認網站」會在名為 「DefaultAppPool」 的應用程式集區中執行:
如果您按下應用程式集區右側的小型省略號按鈕,則會顯示其他對話框,顯示 「DefaultAppPool」 的詳細資訊。 如先前所述,“DefaultAppPool” 預設為 iis 8.0 的 ASP.NET 4.5,因此 ASP.NET 部署在「默認網站」中的 4.5 個應用程式,而不需要任何進一步的設定。
此時,按兩下 [取消] 以取消 [選取應用程式集區] 對話框和 [進階 設定] 對話框。
同時執行 ASP.NET 3.5 和 ASP.NET 4.5 應用程式
既然您已探索 IIS 8.0 的設定狀態,請嘗試執行一些範例 ASP.NET 程式代碼,以確認 ASP.NET 3.5 和 ASP.NET 4.5 應用程式都可以在單一 IIS 8.0 安裝上同時執行。
下列.zip包含 ASP.NET 3.5 和 ASP.NET 4.5 的範例程式代碼:
首先,在 IIS 8.0 上設定簡單的 ASP.NET 3.5 應用程式:
開啟 「examples.zip」 檔案。
在 Windows Server 2012 電腦上的 Windows 檔案總管中,流覽至 IIS 安裝的 “wwwroot” 目錄。 例如,如果您在 C:\ 磁碟驅動器安裝 IIS,“wwwroot” 目錄將會位於
c:\inetpub\wwwroot
。從 「examples.zip」 複製 「example35」 資料夾,並將它貼到目錄
c:\inetpub\wwwroot
。 當您完成時,目錄結構看起來應該如下所示:
新建立的 「example35」 資料夾必須設定為 IIS 管理員中的 ASP.NET 3.5 應用程式。 返回 [IIS 管理員] 視窗,按兩下 [預設網站] 節點,然後選取 [ 重新整理]。 默認網站下子節點的樹視圖現在會顯示 「example35」 資料夾:
以滑鼠右鍵按兩下 example35 資料夾,然後選取 [轉換成應用程式]:
[ 新增應用程式 ] 對話框隨即出現。 根據預設,默認網站中的所有目錄都是稱為 DefaultAppPool 的應用程式集區一部分。 這表示新建立的資料夾包含 ASP.NET 預設會以 ASP.NET 4.5 應用程式的形式執行。
由於我們想要以 ASP.NET 3.5 應用程式的形式執行 example35 資料夾,因此必須變更應用程式集區。 按兩下 [ 選取],然後快顯的 [ 選取應用程式集 區] 對話框。 將應用程式集區變更為 .NET v2.0 ,如下所示:
按兩下 [ 確定 ] 按鈕以接受應用程式集區變更,然後按兩下 [ 確定 ] 再次認可 IIS 的變更。 [IIS 管理員] 視窗再次出現。 在顯示 「默認網站」的樹視圖中,「example35」的圖示已變更,表示它現在是個別的 ASP.NET 應用程式。
此時,請啟動 Internet Explorer 的實例,並流覽至下列 URL:
http://localhost/example35
短暫暫停之後,應用程式會顯示此應用程式中支援的 .NET Framework 功能清單。
在 Windows 檔案總管中,如果您瀏覽至
c:\inetpub\wwwroot\example35
目錄,您可以使用記事本來查看 「default.aspx」 的程式代碼,以及 「web.config」 中的資訊。 例如,web.config 的內容包含指示詞,這些指示詞會將 .NET Framework 編譯程式設定為以 “3.5” 模式執行。 “default.aspx” 中的 .NET Framework 程式代碼會示範 .NET 3.5 中引進的一些 C# 建構,特別是 LINQ-to-Object 查詢。
現在執行 ASP.NET 3.5 應用程式,您可以建立第二個 ASP.NET 應用程式,但這次將它設定為使用 .NET Framework 4.5。
返回開啟.zip檔案 「examples.zip」 的 Windows 檔案總管視窗。
開啟 「example45」 資料夾的內容。
在您開啟的第二個 Windows 檔案總管視窗中,瀏覽至
c:\inetpub\wwwroot
。從.zip檔案複製 「default.aspx」 檔案,並將它直接貼到
c:\inetpub\wwwroot
。 的資料夾內容c:\inetpub\wwwroot
現在看起來應該像這樣:
現在返回 Internet Explorer 並流覽至下列 URL:
http://localhost/default.aspx
短暫暫停之後,第二個應用程式集區會開始執行「默認網站」的 ASP.NET 4.5 應用程式。 瀏覽器再次顯示此應用程式中支援的 .NET Framework 功能清單,其中包含動態類型變數清單結尾的新專案(也就是 .NET Framework 4.0/4.5 中引進的動態 關鍵詞)。 請注意,不同於需要特殊 web.config 專案的 “example35” 應用程式,不需要 web.config 檔案,即可在 [默認網站] 中設定和執行 “default.aspx” 頁面。 這是因為 .NET Framework 4.5 是 IIS 8.0 中 ASP.NET 應用程式所使用的預設 .NET Framework,因此不需要額外的設定。
如果您使用 記事本 開啟您剛才複製的「default.aspx」頁面,您也會看到與 「example35」 目錄中的版本相比,有幾個變更。 頁面頂端沒有命名空間指示詞,因為 .NET Framework 4.5 是 IIS 8.0 上的預設值。 頁面上的程式代碼示範如何使用 動態 變數,這是 .NET Framework 4.0/4.5 中引進的編譯程式概念。
摘要
IIS 8.0 支援在同一部計算機上執行 ASP.NET 3.5 和 ASP.NET 4.5 應用程式,並使用不同的應用程式集區來裝載每個 .NET Framework 版本。 IIS 8.0 支援多個 .NET Framework 版本,可讓開發人員和系統管理員充分利用 IIS 8.0,同時維持與 Windows Server 2008 R2 所攜帶之 Web 應用程式的回溯相容性。