Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> 電腦軟體教學 >> 伺服器技術 >> 關於伺服器

IIS 6 部署 ASP.NET MVC 應用程式完整指南:萬用字元對應與靜態資源效能優化

編輯:關於伺服器

IIS 6 部署 ASP.NET MVC 需將所有要求導向 ASP.NET ISAPI,但可透過靜態資源繞過管線提升效能。本文詳細說明部署步驟、萬用字元對應設定、靜態資源隔離與版本差異處理。

架構原理

  • MVC 基於 ASP.NET,預設檢查實體檔案是否存在,存在則直接服務,不經路由。
  • IIS 6 無整合管線,需設定萬用字元應用程式對應,將所有要求(含無副檔名 URL)交給 aspnet_isapi.dll。
  • 靜態資源(CSS/JS/圖片)若不需權限控管,可設定由 IIS 原生服務,減輕 ASP.NET 執行緒池壓力。

部署前置準備

  1. 專案發布至目標路徑(如 D:\WebApps\MyMvcApp)。
  2. 靜態資源集中放置於 Content、Scripts 資料夾,目錄名稱建議小寫。
  3. MVC 2:私有部署 System.Web.Mvc.dll;MVC 3+:建議機器級安裝 MVC 套件(Razor、WebPages 等相依組件多)。

步驟 1:建立網站與應用程式集區

  • IIS 管理員 → 右鍵「網站」→ 新增網站,指定實體路徑、IP/連接埠/主機標頭。
  • 建立專用應用程式集區(如 MvcAppPool),.NET 版本設為 v4.0(MVC 3+)或 v2.0(MVC 2),管線模式僅有「傳統」。

步驟 2:設定萬用字元應用程式對應——關鍵步驟

  1. 網站右鍵 → 「內容」→ 「主目錄」索引標籤 → 「設定」。
  2. 「萬用字元應用程式對應」區塊 → 「插入」。
  3. 可執行檔:
    C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll(MVC 3+)
    C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll(MVC 2)
  4. 取消勾選「確認檔案是否存在」——此為關鍵,使無實體檔案的 MVC 路由 URL 能進入 ASP.NET 管線。
  5. 確定儲存。

萬用字元對應設定

步驟 3:啟用 ASP.NET 4.0 擴充功能

  1. IIS 管理員 → 「Web 服務擴充功能」。
  2. 找到「ASP.NET v4.0.30319」→ 狀態設為「允許」。

啟用 ASP.NET 4.0 擴充

步驟 4:靜態資源目錄繞過 ASP.NET 管線(效能優化)

  1. IIS 管理員展開網站,右鍵 Content 資料夾 → 「內容」。
  2. 「虛擬目錄」索引標籤 → 「設定」。
  3. 在「應用程式對應」清單中,移除 .* 萬用字元對應,或確認靜態副檔名對應至 aspnet_isapi.dll 並勾選「確認檔案存在」。
  4. 更簡單做法:將 Content、Scripts 設為獨立虛擬目錄,應用程式集區設為「無受控碼」或直接不設定萬用字元對應。

靜態資源目錄設定

常見問題與對策

問題原因解決
404 Not Found(無副檔名 URL)未取消「確認檔案存在」步驟 2 必須取消勾選
靜態檔案 401/403靜態目錄繼承網站驗證設定虛擬目錄內容 → 目錄安全性 → 匿名存取啟用
MVC 3 部署缺組件未機器級安裝 MVC 3執行 AspNetMVC3Setup.exe 或 NuGet 套件還原含所有相依
驗證/授權失效萬用字元對應導致所有要求進管線web.config 區段精細控制授權規則

進階:URL Rewrite 替代方案(不修改萬用字元對應)

安裝 URL Rewrite Module 2.0,在 web.config 設定:

<system.webServer>
  <rewrite>
    <rules>
      <rule name="MVC Routing" stopProcessing="true">
        <match url="^(.*)$" />
        <conditions logicalGrouping="MatchAll">
          <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
          <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
        </conditions>
        <action type="Rewrite" url="/{R:1}" />
      </rule>
    </rules>
  </rewrite>
</system.webServer>

此法需 IIS 7+ 整合管線,IIS 6 需搭配 ISAPI Rewrite(Helicon Ape/Iconic)第三方模組。

結語

IIS 6 部署 MVC 核心在於萬用字元對應 + 取消檔案存在檢查,配合靜態資源目錄隔離可顯著提升效能。但 IIS 6 於 2015 年結束支援,新專案強烈建議部署於 IIS 8.5+ (Windows Server 2012 R2+) 整合管線環境,原生支援 Extensionless URL、模組化管線、效能與安全性大幅優於 IIS 6 時代的權宜之計。

Copyright © Windows教程網 All Rights Reserved