ASP.NET "Server Application Unavailable"錯誤解決

ASP.NET "Server Application Unavailable"錯誤解決

Server Application Unavailable
The web application you are attempting to access on this web server is currently unavailable. Please hit the "Refresh" button in your web browser to retry your request.

Administrator Note: An error message detailing the cause of this specific request failure can be found in the application event log of the web server. Please review this log entry to discover what caused this error to occur.

之後向我求助,經過仔細閱讀了IIS幫助文檔,才發現,原來這個錯誤是由 IIS6 應用程序隔離機製造成的。IIS默認的應用程序隔離機制被稱爲:“工作進程隔離模式”,在此模式中,應用程序被分爲多個組,每個組就是一個“應用程序池” ,每個應用程序池之間是相互隔離的。隔離的好處當然就是安全啦,穩定啦,等等。IIS中的每個應用程序池由一個“工作進程”分別進行管理,也就是"W3wp.exe" 。如果有多個應用程序池中的程序運行,我們就能看到多個w3wp.exe。我們平時新建的虛擬目錄都默認被指向IIS6的“DefaultAppPool" 中,所以在默認情況下,不管你有多少個asp.net程序在運行,在“Windows任務管理器”中你只能看到一個w3wp.exe進程。

出現上述錯誤的原因是: .net Framework 2.0的程序與.net Framework1.1(或1.0)的程序被放入同一個應用程序池(默認情況下放入DefaultAppPool池),也就是由同一個工作進程: w3wp.exe 進行管理,而單個工作進程是無法同時管理不同的程序(或者不同版本的程序)的。如果先訪問.net framework 1.1的頁面,則工作進程先加載並管理了 1.1版本的程序集,此時訪問.net framework 2.0的web程序頁面,Server Application Unavailable 錯誤就出來了。 反之,如果在默認應用程序池的w3wp.exe尚未啓動前先訪問了 2.0的web程序(此時應用程序集已經加載了.net framework2.0的Web程序集),再訪問1.1或1.0的Web程序頁面時,同樣會出現“服務器應用程序不可用” 這樣的中文提示。(您可以結束掉以前的w3wp.exe進行測試。)

我朋友之所以在自己的開發機器上沒出現此錯誤是因爲他在開發基於.net framework 2.0的項目時,一直都只訪問這個2.0的web程序,跟本未曾訪問過其他web程序。而朋友的服務器上已經存在1.0 的項目,並且一直有人使用。這個錯誤在今天之前從未碰到過,其實大部分人在開發一個項目時,都只訪問正在開發的項目。很有可能就忽略了這個問題,而到了發佈的時候卻出現錯誤,搞得手忙腳亂。

解決辦法:在IIS中新建一個應用程序池,然後選中你的 基於.net framework2.0的虛擬目錄,點“屬性”-》在“應用程序池” 中選擇剛纔新建的的應用程序池,點擊“確定”。

如果你的電腦主要是爲了學習,開發,測試web程序,完全可以建一個類似於名爲"dotnet2.0"的應用程序池,以後所有新建的2.0的虛擬目錄都指向此應用程序池。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章