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.
查看Event Viewer,看到的錯誤為:
Error:Failed to execute request because the App-Domain could not be created. Error: 0x80070005 Access is denied.
解決辦法:在該web sites的virtual directory下,將Permissions設(shè)置一下,里面應(yīng)包含:
ASP.NET
IWAM_MachineName
Local_Service
Network_Service
System
而且權(quán)限要設(shè)置為write & read.
設(shè)置后,一切運(yùn)行正常.
另外還有一種可能:
放到打算購買的虛擬主機(jī)上(試用期內(nèi),我讓他安裝了.net 2.0)還是不行,他們應(yīng)該是高手了,一直以為是自己發(fā)布的方式有問題,廣求人,狂看帖,最終知道了是我安裝了。net framework 1.1 和 2.0后,iis的應(yīng)用程序池的配置有誤,網(wǎng)上看到的解決辦法如下:
你的.net 2.0 真的能與1.1 安全正確地運(yùn)行在同一臺電腦上嗎? 小心Server Application Unavailable 錯誤
答案當(dāng)然是肯定的。但不作任何處理的默認(rèn)情況下,會出問題!
各位在同一電腦上同時安裝并運(yùn)行.net 1.1 和 .net 2.0 兩個版本的朋友要小心?。?
您的項目是不是時不時會出現(xiàn) Server Application Unavailable 錯誤呢?或者一直連續(xù)都出這個錯誤!
今天我朋友將其從1.1升級至2.0的項目發(fā)布至公司安裝有windows 2003的服務(wù)器上,結(jié)果2.0的項目始終無法成功運(yùn)行。甚至還造成服務(wù)器上正在為全公司服務(wù)的基于.net Framework 1.1的web程序出錯。他感覺很奇怪,在自己電腦上明明運(yùn)行的很好啊,怎么一到服務(wù)器上就不行了?
他發(fā)布2.0 web程序的過程如下:
1、在服務(wù)器上創(chuàng)建一個目錄,然后將發(fā)布后的所有Web程序的文件復(fù)制到這個新建的目錄。
2、在服務(wù)器的IIS上新建一個虛擬目錄,然后將其配置成可以執(zhí)行腳本的應(yīng)用程序,(過程與創(chuàng)建.net Framework 1.1版本的程序相同。) 然后,將此虛擬目錄的.net Framework 配置成2.0。
大功告成后,開始訪問剛配置的程序,卻得到如下錯誤:
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.
之后向我求助,經(jīng)過仔細(xì)閱讀了IIS幫助文檔,才發(fā)現(xiàn),原來這個錯誤是由 IIS6 應(yīng)用程序隔離機(jī)制造成的。IIS默認(rèn)的應(yīng)用程序隔離機(jī)制被稱為:“工作進(jìn)程隔離模式”,在此模式中,應(yīng)用程序被分為多個組,每個組就是一個“應(yīng)用程序池” ,每個應(yīng)用程序池之間是相互隔離的。隔離的好處當(dāng)然就是安全啦,穩(wěn)定啦,等等。IIS中的每個應(yīng)用程序池由一個“工作進(jìn)程”分別進(jìn)行管理,也就是"W3wp.exe" 。如果有多個應(yīng)用程序池中的程序運(yùn)行,我們就能看到多個w3wp.exe。我們平時新建的虛擬目錄都默認(rèn)被指向IIS6的“DefaultAppPool" 中,所以在默認(rèn)情況下,不管你有多少個asp.net程序在運(yùn)行,在“Windows任務(wù)管理器”中你只能看到一個w3wp.exe進(jìn)程。
出現(xiàn)上述錯誤的原因是: .net Framework 2.0的程序與.net Framework1.1(或1.0)的程序被放入同一個應(yīng)用程序池(默認(rèn)情況下放入DefaultAppPool池),也就是由同一個工作進(jìn)程: w3wp.exe 進(jìn)行管理,而單個工作進(jìn)程是無法同時管理不同的程序(或者不同版本的程序)的。如果先訪問.net framework 1.1的頁面,則工作進(jìn)程先加載并管理了 1.1版本的程序集,此時訪問.net framework 2.0的web程序頁面,Server Application Unavailable 錯誤就出來了。 反之,如果在默認(rèn)應(yīng)用程序池的w3wp.exe尚未啟動前先訪問了 2.0的web程序(此時應(yīng)用程序集已經(jīng)加載了.net framework2.0的Web程序集),再訪問1.1或1.0的Web程序頁面時,同樣會出現(xiàn)“服務(wù)器應(yīng)用程序不可用” 這樣的中文提示。(您可以結(jié)束掉以前的w3wp.exe進(jìn)行測試。)
我朋友之所以在自己的開發(fā)機(jī)器上沒出現(xiàn)此錯誤是因為他在開發(fā)基于.net framework 2.0的項目時,一直都只訪問這個2.0的web程序,跟本未曾訪問過其他web程序。而朋友的服務(wù)器上已經(jīng)存在1.0 的項目,并且一直有人使用。這個錯誤在今天之前從未碰到過,其實(shí)大部分人在開發(fā)一個項目時,都只訪問正在開發(fā)的項目。很有可能就忽略了這個問題,而到了發(fā)布的時候卻出現(xiàn)錯誤,搞得手忙腳亂。
解決辦法:在IIS中新建一個應(yīng)用程序池,然后選中你的 基于.net framework2.0的虛擬目錄,點(diǎn)“屬性”-》在“應(yīng)用程序池” 中選擇剛才新建的的應(yīng)用程序池,點(diǎn)擊“確定”。
如果你的電腦主要是為了學(xué)習(xí),開發(fā),測試web程序,完全可以建一個類似于名為"dotnet2.0"的應(yīng)用程序池,以后所有新建的2.0的虛擬目錄都指向此應(yīng)用程序池。
---------------------------------------------------------------------------------------------------------------------------
這個在微軟官方的解析為:
原因
< SCRIPT type=text/javascript>loadTOCNode(1, 'cause');< /SCRIPT>
出現(xiàn)此問題的原因是進(jìn)程模型用戶帳戶(默認(rèn)情況下為 ASPNET)沒有所需系統(tǒng)文件和文件夾的正確用戶權(quán)限,以便運(yùn)行 ASP.NET 工作進(jìn)程。
替代方法
< SCRIPT type=text/javascript>loadTOCNode(1, 'workaround');< /SCRIPT>
要解決此問題,請驗證該 ASPNET 帳戶擁有如下所示的正確用戶權(quán)限: • %windir%\Microsoft.NET\Framework\Version\Temporary ASP.NET 文件:完全控制
• %windir%\Temp:完全控制
• 應(yīng)用程序文件夾:讀取
• %installroot% 層次結(jié)構(gòu)(例如,%windir%\Microsoft.Net\Framework\Version):讀取
• %windir%\Assembly:讀取
注意:這是全局程序集緩存。不能直接使用 Windows 資源管理器編輯此文件夾的 ACL。正確做法是,打開命令窗口,然后運(yùn)行以下命令:
cacls %windir%\assembly /e /t /p domain\useraccount:R
另外,在使用 Windows 資源管理器之前,請先運(yùn)行以下命令以取消對 Shfusion.dll 的注冊:
regsvr32–u shfusion.dll
在 Windows 資源管理器中設(shè)置了用戶權(quán)限后,請運(yùn)行以下命令重新注冊 Shfusion.dll:
regsvr32 shfusion.dll
• 網(wǎng)站根目錄(例如,%root%\Inetpub\Wwwroot)或默認(rèn)網(wǎng)站指向的路徑:讀取
• %windir%\System32:讀取
(通常情況下,ASPNET 帳戶已被授予了用戶組成員的用戶權(quán)限。)
錯誤2
基本上,這個情況最可能發(fā)生在第一次執(zhí)行 .Net framework 2.0 ,原因不明,但底下的做法大致可以解決此問題:
1.首先開啟「命令窗口」,並切換目錄到 %SystemRoot%\Microsoft.Net\Framework\ (%SystemRoot% 視你 Windows 安裝目錄而定,一般是在 C:\Windows)
2.在命令行執(zhí)行 "net stop w3svc" 終止 w3svc 服務(wù)
3.切換到下層目錄 v2.0.5.xxx
4.執(zhí)行 "aspnet_regiis.exe -ua" 卸載 .Net
5.重新安裝 .Net 到 IIS 中 執(zhí)行 "aspnet_regiis.exe -i"
6.重新啟動 w3svc 執(zhí)行 "net start w3svc".
如對本文有疑問,請?zhí)峤坏浇涣髡搲?,廣大熱心網(wǎng)友會為你解答!! 點(diǎn)擊進(jìn)入論壇