﻿# ASP.NET 4.0 安裝在 IIS6 最常遇到的四個問題

昨天同事將一個 ASP.NET 4.0 的網站安裝到客戶的 IIS6 主機上 (測試環境)，結果過程非常不順利，他們曾經一度覺得客戶的主機不知道經過幾隻手蹂躪過了（因為有好多人在共用 Administrator 帳號）進而產生排斥安裝在客戶主機以及 “為什麼我們要用 ASP.NET 4” 的感覺，不過在一群人的努力之下最後還是克服了困難，我特別因此寫下筆記，相信這些問題有其他人也可能會遇到。

要執行 ASP.NET 4.0 網站必須先[安裝 Microsoft .NET Framework 4](http://www.microsoft.com/downloads/details.aspx?displaylang=zh-tw&FamilyID=0a391abd-25c1-4fc0-919f-b21f31ab88b7)

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/697a87ae4909c8ace0e1-image.png)

安裝前必須先確定你的作業系統版本是在支援的範圍內：

-   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 的選項

![設定網站站台的 ASP.NET 頁籤時找不到 ASP.NET 4.0 的選項](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/d10e6d340e0da8c8ec69-image.png "設定網站站台的 ASP.NET 頁籤時找不到 ASP.NET 4.0 的選項")

注意：如果你只有安裝 [.NET Framework Client Profile](http://msdn.microsoft.com/en-us/library/cc656912.aspx) 是不支援 ASP.NET 的，必須下載 [Microsoft .NET Framework 4 (獨立安裝程式)](http://www.microsoft.com/downloads/details.aspx?displaylang=zh-tw&FamilyID=0a391abd-25c1-4fc0-919f-b21f31ab88b7) 來安裝才會完整。

![.NET Framework Client Profile](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/af66b60b6a310894f833-image.png ".NET Framework Client Profile")

正常來說，只要 Windows Server 2003 已經先安裝好 IIS 再安裝 [Microsoft .NET Framework 4](http://www.microsoft.com/downloads/details.aspx?displaylang=zh-tw&FamilyID=0a391abd-25c1-4fc0-919f-b21f31ab88b7) 就可以在 IIS 6.0 **網站站台**的 **ASP.NET** 頁籤找到 ASP.NET 4.0 的選項：

![只要 Windows Server 2003 已經先安裝好 IIS 再安裝 Microsoft .NET Framework 4 就可以在 IIS 6.0 網站站台的 ASP.NET 頁籤找到 ASP.NET 4.0 的選項](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/12e4c70a623e9567e807-image.png "只要 Windows Server 2003 已經先安裝好 IIS 再安裝 Microsoft .NET Framework 4 就可以在 IIS 6.0 網站站台的 ASP.NET 頁籤找到 ASP.NET 4.0 的選項")

**常見問題2**：安裝好 [.NET 4](http://www.microsoft.com/downloads/details.aspx?displaylang=zh-tw&FamilyID=0a391abd-25c1-4fc0-919f-b21f31ab88b7) 後還是找不到設定**網站站台**的 **ASP.NET** 頁籤的 ASP.NET 4.0 的選項

這問題通常出在先安裝 [Microsoft .NET Framework 4](http://www.microsoft.com/downloads/details.aspx?displaylang=zh-tw&FamilyID=0a391abd-25c1-4fc0-919f-b21f31ab88b7) 才安裝 IIS6，這時必須輸入以下指令將 ASP.NET 4.0 註冊進 IIS6 即可：

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

![C:\\WINDOWS\\Microsoft.NET\\Framework\\v4.0.30319\\aspnet\_regiis.exe -ir -enable](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/8b3a4745e9fce7db8e08-image.png "C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -ir -enable")

**常見問題3**：安裝好 [.NET 4](http://www.microsoft.com/downloads/details.aspx?displaylang=zh-tw&FamilyID=0a391abd-25c1-4fc0-919f-b21f31ab88b7) 也設定好**網站站台**的 ASP.NET 4.0 的選項依然無法執行網站

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

![找不到這個頁面 (HTTP 錯誤 404 - 找不到檔案或目錄)](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/3b709d24711e6b355ec6-image.png "找不到這個頁面 (HTTP 錯誤 404 - 找不到檔案或目錄)")

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

![應用程式設定 - 萬用字元應用程式對應](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/8966b7d4dfa6e8d9ae31-image.png "應用程式設定 - 萬用字元應用程式對應")

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

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

![到 \[網頁服務延伸\] 的地方將 ASP.NET v4.0.30319 設定 \[允許\] 即可](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/75e5a4af67174d874a41-image.png "到 [網頁服務延伸] 的地方將 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 或 伺服器應用程式無法使用 的錯誤：

![伺服器應用程式無法使用](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/39f21b984257429c9383-image.png "伺服器應用程式無法使用")

解決的方法有二：

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

**相關連結**

-   [Microsoft .NET Framework 4 (獨立安裝程式)](http://www.microsoft.com/downloads/details.aspx?displaylang=zh-tw&FamilyID=0a391abd-25c1-4fc0-919f-b21f31ab88b7)   /   [.NET Framework 4 讀我檔案](http://go.microsoft.com/fwlink/?LinkID=186763)
-   [Microsoft .NET Framework 4 Full 語言套件 (x86/x64)](http://web.archive.org/web/20120107134945/http://www.microsoft.com/downloads/zh-tw/details.aspx?familyid=7A4C6414-7F64-47A5-AE20-218403137957&displaylang=zh-tw)
-   [ASP.NET 4 and Visual Studio 2010 Web Development Overview](http://www.asp.net/learn/whitepapers/aspnet4)
