ASP.NET 4.0 安裝在 IIS6 最常遇到的四個問題作者:多奇數位創意有限公司 技術總監 黃保翕 ( Will 保哥 )

ASP.NET 4.0 在開發與部署方面皆有許多強化的功能,若要協助客戶將新開發的 ASP.NET 4.0 網站部署到現有的 Windows Server 2003 伺服器 (IIS6) 一般來說還是挺順利的,不過客戶端現有的 IIS6 可能已經部署了許多網站,而且部署的環境與設定也不見得單純,因此很有可能遇到一些問題,筆者在部署 ASP.NET 4.0 網站至 IIS6 時也親自遭遇幾次問題,其實有些問題從 ASP.NET 1.1 升級到 ASP.NET 2.0 的時候就遇過了,但想必還會有人在這次升級時遭遇到相同的問題,以下就是將 ASP.NET 4.0 網站部署到 IIS6 最常遇到的四個問題。

首先,要正確部署 ASP.NET 4.0 網站必須先安裝 Microsoft .NET Framework 4 執行環境,但在安裝前必須先確定你的作業系統版本是在支援的範圍內:

  • Windows XP SP3
  • Windows Server 2003 SP2
  • Windows Vista SP1 (含) 以後版本
  • Windows Server 2008 (伺服器核心角色不支援)
  • Windows 7
  • Windows Server 2008 R2 (伺服器核心角色不支援)

常見問題1:設定網站站台的 ASP.NET 頁籤時找不到 ASP.NET 4.0 的選項

注意:如果你只有安裝 .NET Framework Client Profile 是不支援 ASP.NET 的,必須下載 Microsoft .NET Framework 4 (獨立安裝程式) 來安裝才會完整。

正常來說,只要 Windows Server 2003 已經先安裝好 IIS 再安裝 Microsoft .NET Framework 4 就可以在 IIS 6.0 網站站台的 ASP.NET 頁籤找到 ASP.NET 4.0 的選項:

常見問題2:安裝好 .NET 4 後還是找不到設定網站站台的 ASP.NET 頁籤
的 ASP.NET 4.0 的選項

這問題通常出在先安裝 Microsoft .NET Framework 4 才安裝 IIS6,這時必須輸入以下指令將 ASP.NET 4.0 註冊進 IIS6 即可:

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -ir -enable

常見問題3:安裝好 .NET 4 也設定好網站站台的 ASP.NET 4.0 的選項
依然無法執行網站

這裡的「無法執行網站」其實所有執行的頁面都會出現 找不到這個頁面 (HTTP 錯誤 404 - 找不到檔案或目錄) 的回應,不管你怎麼設定目錄安全性或任何執行權限都無法執行任何 ASP.NET 程式,而且可能只有靜態頁面可以讀取而已,像是如下圖示這麼一般性的錯誤訊息真的很容易讓 IT 人員不知如何是好:

如果你因為安裝 ASP.NET MVC 而有設定「萬用字元應用程式對應」的話,則會發現網站所有頁面包括靜態檔案讀去都會回應 找不到這個頁面 的錯誤!

此問題發生的原因是 IIS6 阻擋了 c:\windows\microsoft.net\framework\v4.0.30319\aspnet_isapi.dll 程式的執行,由於所有會被導向到此 ISAPI Handler 的要求全部都會失敗,所以才會導致你所有 HTTP 要求都會得到 HTTP 404 Not Found 的結果。

解決方式很簡單,只要到 [網頁服務延伸] 的地方將 ASP.NET v4.0.30319 設定 [允許] 即可,如下圖示:

常見問題4:ASP.NET 4.0 的網站站台已經設定好也可以正常執行了,
但執行一段時間會自己掛掉!

如果你在同一個應用程式集區設定了兩個不同版本的 ASP.NET 就會造成這個問題,例如你原本有個 ASP.NET 2.0 的站台,並且設定的應用程式集區為 DefaultAppPool,然而你之後又新增了一個 ASP.NET 4.0 的站台,而預設的應用程式集區也是在 DefaultAppPool 的話就會發生衝突了,這時就會看是哪個站台先被執行起來,先跑起來的那個站台才會搶到所有權,後面執行的那個就會發生 Server Application Unavailable 或 伺服器應用程式無法使用 的錯誤:

解決的方法有二:

  • 將共用應用程式集區的 網站站台 或 網站應用程式(虛擬目錄) 都設定到 ASP.NET v4.0.30319
  • 區分兩個不同的應用程式集區

相關連結

本文同步刊載於 http://blog.miniasp.com/post/2010/06/IIS-6-ASPNET-4-Installation-Notes.aspx