IIS 7.5 部署ASP.NET失敗的解決方法
近日在win7的IIS7.5上部署ASP.NET4.0 程序時(shí),發(fā)現(xiàn)瀏覽網(wǎng)頁都出現(xiàn)錯(cuò)誤代碼為"503“的錯(cuò)誤,但是我已經(jīng)將對應(yīng)用程序部署到IIS上了,怎么會出現(xiàn)找不到頁面的情況呢?開始以為是ASP.Net 環(huán)境沒有安裝到IIS7.5中,執(zhí)行了幾遍ASPNET_REGIIS -i都還是一樣,結(jié)果查看ASP.NET應(yīng)用程序使用的【應(yīng)用程序池】-DefaultAppPool停止了,于是我馬上啟動,但是馬上它有恢復(fù)成【停止】狀態(tài):
于是,查看【windows事件查看器】發(fā)現(xiàn)如下錯(cuò)誤:
發(fā)現(xiàn)錯(cuò)誤是“沒有足夠的權(quán)限”,
于是看了一下【應(yīng)用程序池】的【高級設(shè)置】中的【進(jìn)程模型】的【標(biāo)識】設(shè)置的是“ApplicationPoolIdentity”,對于此設(shè)置的說明,參考了:http://chabaoo.cn/article/65315.htm如下:
ApplicationPoolIdentity – 默認(rèn)情況下,選擇“應(yīng)用程序池標(biāo)識”帳戶。啟動應(yīng)用程序池時(shí)動態(tài)創(chuàng)建“應(yīng)用程序池標(biāo)識”帳戶,因此,此帳戶對于您的應(yīng)用程序來說是最安全的。
也就是說"ApplicationPoolIdentity"帳號是系統(tǒng)動態(tài)創(chuàng)建的“虛擬”帳號(說它是虛擬的,是因?yàn)樵谟脩艄芾砝锟床坏皆撚脩艋蛴脩艚M,在命令行下輸入net user也無法顯示,但該帳號又是確實(shí)存在的)
如何驗(yàn)證該帳號確實(shí)是存在的的?打開任務(wù)管理器,觀察一下:
w3wp.exe即iis進(jìn)程,上圖中高亮部分表明該iis進(jìn)程正在以帳號luckty運(yùn)行(注意這里的luckty即為上圖中的應(yīng)用程序池名稱)
好了,搞清楚這個(gè)有什么用?
先來做一個(gè)測試,比如我們在iis里新建一個(gè)站點(diǎn),主目錄設(shè)置為c:\2\,應(yīng)用程序池就指定剛才圖中的luckty
假如我們在該站點(diǎn)的default.aspx.cs里寫入這樣一行代碼 :
File.AppendAllText("C:\\TestDir\\1.txt",DateTime.Now.ToString());
前提是c盤必須先建一個(gè)目錄TestDir,同時(shí)除Administrator,System保留完全控制權(quán)外,其它帳號的權(quán)限都刪除掉
運(yùn)行后,會提示異常: 對路徑“C:\TestDir\1.txt”的訪問被拒絕。
原因很明顯:該站點(diǎn)運(yùn)行時(shí)是以應(yīng)用程序池(luckty)對應(yīng)的虛擬帳號運(yùn)行的,而這個(gè)虛擬帳號不具備c:\TestDir的訪問權(quán)限
這種情況在web服務(wù)器(iis6)安全配置中很常見,比如我們把圖片上傳目錄,常常放在主目錄之外,同時(shí)以虛擬目錄形式掛于站點(diǎn)之下,另外在IIS6中不指定該目錄任何執(zhí)行權(quán)限 ,這樣即使有人非法上傳了asp/aspx木馬上去,也無法運(yùn)行搞不成破壞!
言歸正傳,要想讓那一行測試代碼正常運(yùn)行,解決辦法很簡單,把虛擬帳號的權(quán)限加入文件夾安全權(quán)限中即可,但是問題來了:這個(gè)虛擬帳號我們是不可見的,如果你直接添加名為luckty的用戶到文件夾安全帳號里,根本通不過(提示找不到luckty用戶),說明這個(gè)虛擬帳號名稱并不是"luckty"
關(guān)鍵:手動輸入 IIS AppPool\luckty (即IIS AppPool\應(yīng)用程序池名),再確定,這回ok了.
當(dāng)然除了用"IIS AppPool\應(yīng)用程序池名"外,windows內(nèi)部還有一個(gè)特殊的用戶組Authenticated Users,把這個(gè)組加入TestDir的安全權(quán)限帳號里也可以,不過個(gè)人覺得沒有"IIS AppPool\應(yīng)用程序池名"來得精確.
結(jié)束語:
IIS7.5的虛擬帳號設(shè)計(jì)確實(shí)很棒,想想傳統(tǒng)IIS6的時(shí)候,為了把同一服務(wù)器上的各站點(diǎn)權(quán)限分開(以防止木馬搗亂),不得不創(chuàng)建一堆iuser_XXX,iwam_XXX帳號并指定密碼,再一個(gè)個(gè)站點(diǎn)分配過去,累死人!而虛擬帳號設(shè)計(jì)則讓這類管理輕松多了,也不用擔(dān)心密碼過于簡單或過期問題。So,還在等什么,趕緊升級到win7/win2008 R2吧!
另外:如果沿用之前的做法,可將【標(biāo)識】設(shè)置成"LocalSystem"亦可解決
相關(guān)文章
win2003 多用戶遠(yuǎn)程登錄設(shè)置方法(圖文)
一般在默認(rèn)的情況下,windows 2003 只能實(shí)現(xiàn)2個(gè)遠(yuǎn)程用戶登錄,在網(wǎng)上搜索過一些設(shè)置,也親自做過一些設(shè)置,網(wǎng)絡(luò)上講的不安裝“終端服務(wù)”的做法是不可行的2013-11-11通過windows自帶的系統(tǒng)監(jiān)視器來查看IIS并發(fā)連接數(shù)(perfmon.msc)
如果要想知道確切的當(dāng)前網(wǎng)站IIS連接數(shù)的話,最有效的方法是通過windows自帶的系統(tǒng)監(jiān)視器來查看。這正是本文要介紹的方法2013-03-03Windows 2003 iis FLV 視頻不能播放的原因與解決
在本地使用Flash媒體播放器可以播放的FLV視頻,傳到網(wǎng)上就不行了.2009-02-02Windows Server 2019 安裝和配置DHCP服務(wù) Ⅱ
這篇文章主要介紹了Windows Server 2019 安裝和配置DHCP服務(wù) Ⅱ,需要的朋友可以參考下2023-05-05IIS7.5 Error Code 0x8007007e HTTP 錯(cuò)誤 500.19的解決方法
這篇文章主要介紹了IIS7.5 Error Code 0x8007007e HTTP 錯(cuò)誤 500.19的解決方法,需要的朋友可以參考下2015-10-10IIS7.5應(yīng)用程序池集成模式和經(jīng)典模式的區(qū)別介紹
由于最近公司服務(wù)器上需要將iis的應(yīng)用程序池全部都升級到4.0的框架,當(dāng)然選擇4.0就肯定使用集成模式部署2012-08-08win2003 R2升級提示另一個(gè)應(yīng)用程序要求重新啟動的解決方法
windows2003 R2升級提示另一個(gè)應(yīng)用程序要求重新啟動計(jì)算機(jī),您必須重新啟動此計(jì)算機(jī)安裝程序才能運(yùn)行的臨時(shí)解決方法2012-06-06