.NET+IIS環境常見問題排障

你是否經常會遇到以下的攔路虎,當你興致勃勃地把調試好的程序發佈到WEB服務器時,以下錯誤就出現了:

1、無法找到文件(404)白底黑字

2、沒有權限訪問該文件(403)白底黑字

3、直接彈出來一個要輸入帳號密碼的框框,然後你對着屏幕說:什麼密碼。

4、黃底黑字+紅字的錯誤提示頁(.Net)

5...

這些東東幾乎佔據了.Net+IIS搭建環境的絕大部分錯誤。

有時我們無意中覆蓋一個“不起眼”的文件,上述錯誤就會蹦出來。碰巧該應用又是非常重要的應用,這足夠讓你接下來的一個小時冒冷汗。

不過光冒冷汗沒用,引用一句話:錯誤不被你解決,你就有可能被錯誤解決。我們還是淡定下來解除這些錯誤吧。我們一項項的來:

1、無法找到文件(404)白底黑字

有以下這些可能性:

第一,你所訪問的路徑確實沒有這個文件,或許你記錯了位置,但它的確不存這個文件。解決辦法:找到這個文件,去IIS所指向的目錄中一層層找這個文件,並確認它存在。

第二,你的IIS沒有認出來這個文件,沒有該文件的解釋器(IIS網站屬性——主目錄——配置——應用程序擴展)。IIS沒有該程序的解釋器,然後撒一個謊說沒有這個文件。解決方法:打開(IIS網站屬性——主目錄——配置——應用程序擴展),添加應用程序的相關解釋器。

第三,你有某個UrlRewrite在起作用,將你輸入的URL給重定向到一個不存在的文件或目錄。

。。。

2、沒有權限訪問該文件(403)白底黑字

有以下這些可能性:

你的NTFS文件夾沒有給予WEB用戶讀取的權限。解決方法:打開計算機管理——本地用戶和組——用戶——添加用戶,在這裏添加一個用戶,請記住該用戶不要屬於任何組,如下圖所示:

添加新的用戶時,密碼先用記事本打出來,添加完成後,記事本不要關閉,這個密碼在IIS裏配置時還需要用到一次.

用戶不需要屬於任何組,不繼承任何權限.

之後,我們開始給WEB文件夾賦予權限了.順便提一下,給WEB文件夾配置權限這個步驟很重要,見過很多站點被黑都是因爲文件夾權限設置不當,要麼過大,要麼根本沒有一站一用戶,有些站點直接給EveryOne用戶最大權限,甚至有些站長認爲NTFS磁盤格式"根本沒用",直接把網站所在的磁盤做成FAT32的,還有很多的虛擬主機商爲了圖省事,雖然做到了一站一戶(軟件生成),但是配置的權限過高,因爲配置低權限有時候會出現運行故障....後果可想而知.我們遇到問題不要慌,特別是安全的問題.

配置文件夾權限的操作方式是:在WEB文件夾上點右鍵,選擇屬性——安全;

爲了安全,我們要保證網站文件夾的初始權限狀態是這樣的:

爲防止逐步提權。網站所在磁盤及該磁盤中所有下屬文件夾,除了你用於遠程登錄的最高管理員,其它的統統去掉。

我們要向該文件夾添加2個用戶權限:一個是剛剛添加的用戶,用於WEB訪問該文件夾,一個是系統內置用戶Network Service,用於.net組件在本機運行時訪問。

給文件夾添加用戶的方法之一是單擊“添加”——“高級”——“立即查找”,從結果列表中選擇目標用戶。

添加這些用戶進入列表之後,還不算完,點擊“高級”,然後選擇某個用戶,點擊“編輯”,給這個用戶分配權限,要說的東西限於篇幅,在這裏我只給2點參考意見:

(1)WEB文件夾的權限再大也不能大過這個底線:如下圖所示:

請記住,“完全控制”,“遍歷文件夾/運行文件”,“更改權限”,“取得所有權”這四個權限絕不能賦給WEB用戶。

(2)請根據需要給子文件夾配置各種不同的權限。例如:給用於上傳文件的文件夾寫入、刪除等一系列權限,但爲防止用戶通過程序本身的上傳機制上傳木馬,則應該在IIS中配置該文件夾執行權限爲“無”:

程序中合法上傳文件的文件夾請設置執行權限爲“無”

3、直接彈出來一個要輸入帳號密碼的框框

這個問題其實很簡單,第二點中就有介紹,因爲我們把WEB文件夾的權限給了自定義的用戶,從而導致IIS的默認用戶失去了該權限,我們打開IIS,在目標網站上點擊右鍵——屬性——目錄安全性——身份驗證和訪問控制欄點“編輯”,出來如下對話框:

IIS有默認的用戶名設置,所以我們要重新配置。

點擊“瀏覽”,選擇我們在第二步中新建的WEB用戶,然後粘帖記事本中存放的密碼,點擊確定之後還要再粘帖一次,確定就可以了。

現在刷新頁面看看,應該可以正常瀏覽了。

4、黃底黑字+紅字的錯誤提示頁

.net的所有錯誤如果沒有被重定向到自定義頁,所有的程序級錯誤都是諸如黃底+黑字或紅字的錯誤信息,因爲太常見,我就不截圖浪費資源了,在這裏,我只講一下關於環境的,“Web應用程序當前不可用”,請打開IIS,有兩個地方要修改:

1、右鍵網站屬性,選擇Asp.Net選項卡,在版本里選擇正確的版本。

2、IIS主窗體左側的“WEB服務擴展”中,選擇相應的ASP.net擴展,並點擊“允許”。

因爲時間關係,且這篇文章老被意外打斷,並且蒐集證據,居然花了四天時間,效率可見相當之低!

以上四點,只是本人幹活多年遇到的.Net+IIS環境主要環境問題彙總。希望大家多補充,不當之處懇請批評指正。

原文鏈接:http://www.cnblogs.com/CoreCaiNiao/archive/2011/08/01/2123991.html

【編輯推薦】

  1. VB.NET和ASP.NET編碼規範
  2. ASP.Net中保護自定義的服務器控件
  3. 使用ASP.NET操作IIS7中使用應用程序
  4. ASP.net的身份驗證方式FORMS
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章