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

  分享到噗浪!

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

要執行 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 的選項

設定網站站台的 ASP.NET 頁籤時找不到 ASP.NET 4.0 的選項

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

.NET Framework Client Profile

正常來說,只要 Windows Server 2003 已經先安裝好 IIS 再安裝 Microsoft .NET Framework 4 就可以在 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 的選項

常見問題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

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 人員不知如何是好:

找不到這個頁面 (HTTP 錯誤 404 - 找不到檔案或目錄)

如果你因為安裝 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 設定 [允許] 即可,如下圖示:

到 [網頁服務延伸] 的地方將 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
  • 區分兩個不同的應用程式集區

相關連結


此文章由 will 發表於 2010/6/22 下午 06:46:03

永久連結 | 評論 (14) | 此文章的RSSRSS comment feed |

分類: ASP.NET | ASP.NET MVC | IIS | Tips

標籤: , , , , , ,

評論

六月 22. 2010 22:32

chuck

.....細節還真多,幸好我們現在都換IIS7了

chuck Taiwan

六月 23. 2010 18:09

tomexou

感謝分享,iis6/win2003目前仍是很多小企業最省錢的主力部隊
看到成功安裝案例,讓我也有upgrade至net 4的動機了!

tomexou

八月 19. 2010 19:55

抽风

感谢,对我很有用。

抽风 People's Republic of China

十一月 16. 2010 18:58

Erwin

Dear 保哥:
請教一下,若是遇到 "網頁服務延伸" ASP.NET 4.xx 被禁制的狀態
是否有 Script 或是其他方法,透過程式控制的方式將它開啟呢?
因為我目前想將這段動作整合在安裝程式中,
麻煩大大抽空回答哩~

Erwin Taiwan

十一月 16. 2010 21:25

Erwin

小弟剛剛找到方法了.. 和大家分享一下

cscript iisext.vbs /EnFile C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll

參考網址
dillieodigital.wordpress.com/.../

Erwin Taiwan

二月 10. 2011 19:59

阿德

寶哥~

請問一下
您的網站捲動時

捲到的圖片才會被顯示出來
請問這是被捲到後才會去抓圖嗎?

然後請問這效果是怎麼做到的啊~
謝謝

阿德 Taiwan

二月 10. 2011 21:05

Will 保哥

阿德: 我使用 Lazy Load Plugin for jQuery 做到的,相關網址:
http://www.appelsiini.net/projects/lazyload

Will 保哥 Taiwan

七月 21. 2011 17:58

bailey

好人呀,HTTP 404 Not Found 这个问题困扰了我好久了系统是windows2003 +IIS6 ,用你的方法解决了。谢谢!

bailey People's Republic of China

十一月 25. 2011 09:44

冠廷

Windows Server 2003 SP2  <<<
當初在警局那台老舊的主機裝4.0  搞的超累的!
早點看到這篇就好了~

冠廷 Taiwan

十二月 8. 2011 00:03

stanley

寶哥你好,因公司推行專案ASP轉ASP.NET MVC2 C#,
導致時常拜讀你的著作,但因最近在SERVER2003於IIS6設定上碰壁,
因看了此篇解說至今已解決不少問題,例如此篇的常見問題1~3,
可是目前還是卡在"類似"常見問題4這個狀況上,
會說"類似"是因為 站台A本身的ASP.NET 原是設2.0
但新的網站是必需要設在站台A下的虛擬目錄B,但B的ASP.NET是4.0,
依照此篇的解決:
方法一:將站台A升至4.0;
方法二:B的應用程式集區設成與A不同的AppPool;

以上兩個方法目前都執行過,但網站還是呈現如常見問題4的狀況,
請問是否還有其他方式可解決?

stanley Taiwan

十二月 8. 2011 02:35

Will 保哥

stanley: 如果照著做還會發生問題,有可能是其他原因,不一定跟版本有關。不然就是環境還更複雜一點,那就必須要看仔細才能查原因了。

Will 保哥 Taiwan

十二月 28. 2011 08:34

EricHu

stanley, 解決方式很簡單! 就是阻斷 Web.Config 的繼承,ASP.NET 2.0 不要影響到 ASP.NET 4.0 的虛擬目錄區。當然 AppPool 應照寶哥講的...分開就行~

EricHu Taiwan

九月 20. 2012 19:47

Ripsea

真的很感謝,好多問題都是看保哥文章解決的

Ripsea Taiwan

十二月 27. 2012 13:16

chang

之前上保哥的課太偷懶,還好找到這篇文章!

chang Taiwan

新增評論


( 您輸入的Email不會顯示於網站上 )

  Country flag

biuquote
  • 評論
  • 線上預覽
Loading