各位在同一電腦上同時(shí)安裝并運(yùn)行.net 1.1 和 .net 2.0 兩個(gè)版本的朋友要小心??!
您的項(xiàng)目是不是時(shí)不時(shí)會(huì)出現(xiàn) Server Application Unavailable 錯(cuò)誤呢?或者一直連續(xù)都出這個(gè)錯(cuò)誤!
今天我朋友將其從1.1升級(jí)至2.0的項(xiàng)目發(fā)布至公司安裝有windows 2003的服務(wù)器上,結(jié)果2.0的項(xiàng)目始終無法成功運(yùn)行。甚至還造成服務(wù)器上正在為全公司服務(wù)的基于.net Framework 1.1的web程序出錯(cuò)。他感覺很奇怪,在自己電腦上明明運(yùn)行的很好啊,怎么一到服務(wù)器上就不行了?
他發(fā)布2.0 web程序的過程如下:
1、在服務(wù)器上創(chuàng)建一個(gè)目錄,然后將發(fā)布后的所有Web程序的文件復(fù)制到這個(gè)新建的目錄。
2、在服務(wù)器的IIS上新建一個(gè)虛擬目錄,然后 將其配置成可以執(zhí)行腳本的應(yīng)用程序,(過程與創(chuàng)建.net Framework 1.1版本的程序相同。) 然后,將此虛擬目錄的.net Framework 配置成2.0。
大功告成后,開始訪問剛配置的程序,卻得到如下錯(cuò)誤:
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),原來這個(gè)錯(cuò)誤是由 IIS6 應(yīng)用程序隔離機(jī)制造成的。IIS默認(rèn)的應(yīng)用程序隔離機(jī)制被稱為:“工作進(jìn)程隔離模式”,在此模式中,應(yīng)用程序被分為多個(gè)組,每個(gè)組就是一個(gè)“應(yīng)用程序池” ,每個(gè)應(yīng)用程序池之間是相互隔離的。 隔離的好處當(dāng)然就是安全啦,穩(wěn)定啦,等等。IIS中的每個(gè)應(yīng)用程序池由一個(gè)“工作進(jìn)程”分別進(jìn)行管理,也就是"W3wp.exe" 。如果有多個(gè)應(yīng)用程序池中的程序運(yùn)行,我們就能看到多個(gè)w3wp.exe。 我們平時(shí)新建的虛擬目錄都默認(rèn)被指向IIS6的“DefaultAppPool" 中, 所以在默認(rèn)情況下,不管你有多少個(gè)asp.net程序在運(yùn)行,在“Windows任務(wù)管理器”中你只能看到一個(gè)w3wp.exe進(jìn)程。
出現(xiàn)上述錯(cuò)誤的原因是: .net Framework 2.0的程序與.net Framework1.1(或1.0)的程序被放入同一個(gè)應(yīng)用程序池(默認(rèn)情況下放入DefaultAppPool池),也就是由同一個(gè)工作進(jìn)程: w3wp.exe 進(jìn)行管理,而單個(gè)工作進(jìn)程是無法同時(shí)管理不同的程序(或者不同版本的程序)的。如果先訪問.net framework 1.1的頁(yè)面,則工作進(jìn)程先加載并管理了 1.1版本的程序集,此時(shí)訪問.net framework 2.0的web程序頁(yè)面,Server Application Unavailable 錯(cuò)誤就出來了。 反之,如果在默認(rèn)應(yīng)用程序池的w3wp.exe尚未啟動(dòng)前先訪問了 2.0的web程序(此時(shí)應(yīng)用程序集已經(jīng)加載了.net framework2.0的Web程序集),再訪問1.1或1.0的Web程序頁(yè)面時(shí),同樣會(huì)出現(xiàn)“服務(wù)器應(yīng)用程序不可用” 這樣的中文提示。(您可以結(jié)束掉以前的w3wp.exe進(jìn)行測(cè)試。)
我朋友之所以在自己的開發(fā)機(jī)器上沒出現(xiàn)此錯(cuò)誤是因?yàn)樗陂_發(fā)基于.net framework 2.0的項(xiàng)目時(shí),一直都只訪問這個(gè)2.0的web程序,跟本未曾訪問過其他web程序。而朋友的服務(wù)器上已經(jīng)存在1.0 的項(xiàng)目,并且一直有人使用。這個(gè)錯(cuò)誤在今天之前從未碰到過,其實(shí)大部分人在開發(fā)一個(gè)項(xiàng)目時(shí),都只訪問正在開發(fā)的項(xiàng)目。很有可能就忽略了這個(gè)問題,而到了發(fā)布的時(shí)候卻出現(xiàn)錯(cuò)誤,搞得手忙腳亂。
解決辦法: 在IIS中新建一個(gè)應(yīng)用程序池,然后選中你的 基于.net framework2.0的虛擬目錄,點(diǎn)“屬性”-》在“應(yīng)用程序池” 中選擇剛才新建的的應(yīng)用程序池,點(diǎn)擊“確定”。
如果你的電腦主要是為了學(xué)習(xí),開發(fā),測(cè)試web程序,完全可以建一個(gè)類似于名為"dotnet2.0"的應(yīng)用程序池,以后所有新建的2.0的虛擬目錄都指向此應(yīng)用程序池。
[2006-03-16 更新] : 如果通地vs 2005IDE 直接創(chuàng)建在IIS 上創(chuàng)建Web Site時(shí),vs 2005會(huì)自動(dòng)添加 ASP.NET 2.0 應(yīng)用程序池,并且將新創(chuàng)建的Web Size 虛擬目錄指向新建的應(yīng)用程序池。
?石家莊網(wǎng)站建設(shè)的優(yōu)點(diǎn):我們是專屬定制,制作符合您公司業(yè)務(wù)、風(fēng)格的網(wǎng)站,這就做到給您制作的網(wǎng)站是網(wǎng)絡(luò)上獨(dú)一無二的網(wǎng)站,這樣更有利于搜索引擎的收錄。如果您喜歡網(wǎng)絡(luò)上某個(gè)風(fēng)格的網(wǎng)站或者網(wǎng)站模板,我們是只仿制而不直接套用,我們會(huì)對(duì)其中的結(jié)構(gòu)和樣式做增減優(yōu)化,做…
?競(jìng)價(jià)排名營(yíng)銷是一種通過 競(jìng)價(jià)購(gòu)買搜索引擎中關(guān)鍵詞或關(guān)鍵短語(yǔ)的廣告方式。競(jìng)價(jià)排名營(yíng)銷分為兩種類型。 第一種,直接為真正的搜索引擎結(jié)果的排名付費(fèi),也就是說付的錢越多,網(wǎng)頁(yè)所獲得的排名名也就越高。 第二種則更類似于普通的廣告。這種競(jìng)價(jià)排名營(yíng)銷方式通過…
?網(wǎng)站優(yōu)化對(duì)網(wǎng)站來說是非常重要的,直接決定和影響著網(wǎng)站所起到的作用,以及在各個(gè)地方當(dāng)中的排名。在進(jìn)行seo優(yōu)化的過程中,我們必須要堅(jiān)持一定的原則,真正的把這些事情做得更好,才可以確保最終的結(jié)果,這對(duì)于我們來說是非常重要的事。 SEO優(yōu)化主要分為8小步: …