淺談.NET+IIS環(huán)境常見問題排障
你是否經(jīng)常會(huì)遇到以下的攔路虎,當(dāng)你興致勃勃地把調(diào)試好的程序發(fā)布到WEB服務(wù)器時(shí),以下錯(cuò)誤就出現(xiàn)了:
1、無法找到文件(404)白底黑字
2、沒有權(quán)限訪問該文件(403)白底黑字
3、直接彈出來一個(gè)要輸入帳號(hào)密碼的框框,然后你對(duì)著屏幕說:什么密碼。
4、黃底黑字+紅字的錯(cuò)誤提示頁(.Net)
5...
這些東東幾乎占據(jù)了.Net+IIS搭建環(huán)境的絕大部分錯(cuò)誤。
有時(shí)我們無意中覆蓋一個(gè)“不起眼”的文件,上述錯(cuò)誤就會(huì)蹦出來。碰巧該應(yīng)用又是非常重要的應(yīng)用,這足夠讓你接下來的一個(gè)小時(shí)冒冷汗。
不過光冒冷汗沒用,引用一句話:錯(cuò)誤不被你解決,你就有可能被錯(cuò)誤解決。我們還是淡定下來解除這些錯(cuò)誤吧。我們一項(xiàng)項(xiàng)的來:
1、無法找到文件(404)白底黑字
有以下這些可能性:
第一,你所訪問的路徑確實(shí)沒有這個(gè)文件,或許你記錯(cuò)了位置,但它的確不存這個(gè)文件。解決辦法:找到這個(gè)文件,去IIS所指向的目錄中一層層找這個(gè)文件,并確認(rèn)它存在。
第二,你的IIS沒有認(rèn)出來這個(gè)文件,沒有該文件的解釋器(IIS網(wǎng)站屬性——主目錄——配置——應(yīng)用程序擴(kuò)展)。IIS沒有該程序的解釋器,然后撒一個(gè)謊說沒有這個(gè)文件。解決方法:打開(IIS網(wǎng)站屬性——主目錄——配置——應(yīng)用程序擴(kuò)展),添加應(yīng)用程序的相關(guān)解釋器。
第三,你有某個(gè)UrlRewrite在起作用,將你輸入的URL給重定向到一個(gè)不存在的文件或目錄。
。。。
2、沒有權(quán)限訪問該文件(403)白底黑字
有以下這些可能性:
你的NTFS文件夾沒有給予WEB用戶讀取的權(quán)限。解決方法:打開計(jì)算機(jī)管理——本地用戶和組——用戶——添加用戶,在這里添加一個(gè)用戶,請(qǐng)記住該用戶不要屬于任何組,如下圖所示:
添加新的用戶時(shí),密碼先用記事本打出來,添加完成后,記事本不要關(guān)閉,這個(gè)密碼在IIS里配置時(shí)還需要用到一次.
用戶不需要屬于任何組,不繼承任何權(quán)限.
之后,我們開始給WEB文件夾賦予權(quán)限了.順便提一下,給WEB文件夾配置權(quán)限這個(gè)步驟很重要,見過很多站點(diǎn)被黑都是因?yàn)槲募A權(quán)限設(shè)置不當(dāng),要么過大,要么根本沒有一站一用戶,有些站點(diǎn)直接給EveryOne用戶最大權(quán)限,甚至有些站長(zhǎng)認(rèn)為NTFS磁盤格式"根本沒用",直接把網(wǎng)站所在的磁盤做成FAT32的,還有很多的虛擬主機(jī)商為了圖省事,雖然做到了一站一戶(軟件生成),但是配置的權(quán)限過高,因?yàn)榕渲玫蜋?quán)限有時(shí)候會(huì)出現(xiàn)運(yùn)行故障....后果可想而知.我們遇到問題不要慌,特別是安全的問題.
配置文件夾權(quán)限的操作方式是:在WEB文件夾上點(diǎn)右鍵,選擇屬性——安全;
為了安全,我們要保證網(wǎng)站文件夾的初始權(quán)限狀態(tài)是這樣的:
為防止逐步提權(quán)。網(wǎng)站所在磁盤及該磁盤中所有下屬文件夾,除了你用于遠(yuǎn)程登錄的最高管理員,其它的統(tǒng)統(tǒng)去掉。
我們要向該文件夾添加2個(gè)用戶權(quán)限:一個(gè)是剛剛添加的用戶,用于WEB訪問該文件夾,一個(gè)是系統(tǒng)內(nèi)置用戶Network Service,用于.net組件在本機(jī)運(yùn)行時(shí)訪問。
給文件夾添加用戶的方法之一是單擊“添加”——“高級(jí)”——“立即查找”,從結(jié)果列表中選擇目標(biāo)用戶。
添加這些用戶進(jìn)入列表之后,還不算完,點(diǎn)擊“高級(jí)”,然后選擇某個(gè)用戶,點(diǎn)擊“編輯”,給這個(gè)用戶分配權(quán)限,要說的東西限于篇幅,在這里我只給2點(diǎn)參考意見:
?。?)WEB文件夾的權(quán)限再大也不能大過這個(gè)底線:如下圖所示:
請(qǐng)記住,“完全控制”,“遍歷文件夾/運(yùn)行文件”,“更改權(quán)限”,“取得所有權(quán)”這四個(gè)權(quán)限絕不能賦給WEB用戶。
?。?)請(qǐng)根據(jù)需要給子文件夾配置各種不同的權(quán)限。例如:給用于上傳文件的文件夾寫入、刪除等一系列權(quán)限,但為防止用戶通過程序本身的上傳機(jī)制上傳木馬,則應(yīng)該在IIS中配置該文件夾執(zhí)行權(quán)限為“無”:
程序中合法上傳文件的文件夾請(qǐng)?jiān)O(shè)置執(zhí)行權(quán)限為“無”
3、直接彈出來一個(gè)要輸入帳號(hào)密碼的框框
這個(gè)問題其實(shí)很簡(jiǎn)單,第二點(diǎn)中就有介紹,因?yàn)槲覀儼裌EB文件夾的權(quán)限給了自定義的用戶,從而導(dǎo)致IIS的默認(rèn)用戶失去了該權(quán)限,我們打開IIS,在目標(biāo)網(wǎng)站上點(diǎn)擊右鍵——屬性——目錄安全性——身份驗(yàn)證和訪問控制欄點(diǎn)“編輯”,出來如下對(duì)話框:
IIS有默認(rèn)的用戶名設(shè)置,所以我們要重新配置。
點(diǎn)擊“瀏覽”,選擇我們?cè)诘诙街行陆ǖ腤EB用戶,然后粘帖記事本中存放的密碼,點(diǎn)擊確定之后還要再粘帖一次,確定就可以了。
現(xiàn)在刷新頁面看看,應(yīng)該可以正常瀏覽了。
4、黃底黑字+紅字的錯(cuò)誤提示頁
.net的所有錯(cuò)誤如果沒有被重定向到自定義頁,所有的程序級(jí)錯(cuò)誤都是諸如黃底+黑字或紅字的錯(cuò)誤信息,因?yàn)樘R?,我就不截圖浪費(fèi)資源了,在這里,我只講一下關(guān)于環(huán)境的,“Web應(yīng)用程序當(dāng)前不可用”,請(qǐng)打開IIS,有兩個(gè)地方要修改:
1、右鍵網(wǎng)站屬性,選擇Asp.Net選項(xiàng)卡,在版本里選擇正確的版本。
2、IIS主窗體左側(cè)的“WEB服務(wù)擴(kuò)展”中,選擇相應(yīng)的ASP.net擴(kuò)展,并點(diǎn)擊“允許”。
因?yàn)闀r(shí)間關(guān)系,且這篇文章老被意外打斷,并且搜集證據(jù),居然花了四天時(shí)間,效率可見相當(dāng)之低!
以上四點(diǎn),只是本人干活多年遇到的.Net+IIS環(huán)境主要環(huán)境問題匯總。希望大家多補(bǔ)充,不當(dāng)之處懇請(qǐng)批評(píng)指正。
原文鏈接:http://www.cnblogs.com/CoreCaiNiao/archive/2011/08/01/2123991.html
【編輯推薦】