很多朋友在用IIS6架網站的時候遇到不少問題,而這些問題有些在過去的IIS5裡面就遇到過,有些是新出來的,俺忙活了一下午,做了很多次實驗,結合以前的排錯經驗,做出了這個總結,希望能給大家幫上忙:)
問題1:未啟用父路徑
癥狀舉例:
Server.MapPath() 錯誤 ASP 0175 : 80004005
不允許的 Path 字元
/0709/dqyllhsub/news/OpenDatabase.asp,行 4
在 MapPath 的 Path 參數中不允許字元 ..。
原因分析:
許多Web頁面裡要用到諸如../格式的語句(即回到上一層的頁面,也就是父路徑),而IIS6.0出於安全考慮,這一選項預設是關閉的。
解決方案:
在IIS中 屬性->主目錄->配置->選項中。把”啟用父路徑“前面打上勾。確認重新整理。
問題2:ASP的Web擴充配置不當(同樣適用於ASP.NET、CGI)
癥狀舉例:
HTTP 錯誤 404 - 檔案或目錄未找到。
原因分析:
在IIS6.0中新增了web程式擴充這一選項,你可以在其中對ASP、ASP.NET、CGI、IDC等程式進行允許或禁止,預設情況下ASP等程式是禁止的。
解決方案:
在IIS中的Web服務擴充中選中Active Server Pages,點擊“允許”。
問題3:身份認證配置不當
癥狀舉例:
HTTP 錯誤 401.2 - 未經授權:訪問由於伺服器配置被拒絕。
原因分析:IIS 支援以下幾種 Web 驗證方法:
匿名驗證
IIS 建立 IUSR_電腦名稱 帳戶(其中 電腦名稱 是正在運行 IIS 的伺服器的名稱),用來在匿名使用者請求 Web 內容時對他們進行身分識別驗證。此帳戶授予使用者本地登入許可權。你可以將匿名使用者存取重設為使用任何有效 Windows 帳戶。
基本驗證
使用基本驗證可限制對 NTFS 格式 Web 服務器上的檔案的訪問。使用基本驗證,使用者必須輸入憑據,而且訪問是基於使用者識別碼 的。使用者識別碼 和密碼都以明文形式在網路間進行發送。
Windows 整合身分識別驗證
Windows 整合身分識別驗證比基本驗證安全,而且在使用者具有 Windows 域帳戶的內部網環境中能很好地發揮作用。在整合的 Windows 身分識別驗證中,瀏覽器嘗試使用目前使用者在域登入過程中使用的憑據,如果嘗試失敗,就會提示該使用者輸入使用者名稱和密碼。如果你使用整合的 Windows 身分識別驗證,則使用者的密碼將不傳送到伺服器。如果該使用者作為域使用者登入到本機電腦,則他在訪問此域中的網路電腦時不必再次進行身分識別驗證。
摘要身分識別驗證
摘要身分識別驗證克服了基本驗證的許多缺點。在使用摘要身分識別驗證時,密碼不是以明文形式發送的。另外,你可以通過Proxy 伺服器使用摘要身分識別驗證。摘要身分識別驗證使用一種挑戰/響應機制(整合 Windows 身分識別驗證使用的機制),其中的密碼是以加密形式發送的。
.NET Passport 身分識別驗證
Microsoft .NET Passport 是一項使用者驗證服務,它允許單一簽入安全性,可使使用者在訪問啟用了 .NET Passport 的 Web 網站和服務時更加安全。啟用了 .NET Passport 的網站會依靠 .NET Passport 中央伺服器來對使用者進行身分識別驗證。但是,該中心伺服器不會授權或拒絕特定使用者訪問各個啟用了 .NET Passport 的網站。
解決方案:
根據需要配置不同的身份認證(一般為匿名身份認證,這是大多數網站使用的認證方法)。認證選項在IIS的屬性->安全性->身分識別驗證和存取控制下配置
問題4:IP限制配置不當
癥狀舉例:
HTTP 錯誤 403.6 - 禁止訪問:用戶端的 IP 位址被拒絕。
原因分析:
IIS提供了IP限制的機制,你可以通過配置來限制某些IP不能訪問網站,或者限制僅僅只有某些IP可以訪問網站,而如果用戶端在被你阻止的IP範圍內,或者不在你允許的範圍內,則會出現錯誤提示。
解決方案:
進入IIS的屬性->安全性->IP地址和網域名稱限制。如果要限制某些IP地址的訪問,需要選擇授權訪問,點添加選擇不允許的IP地址。反之則可以只允許某些IP地址的訪問。
問題5:IUSR帳號被禁用
癥狀舉例:
HTTP 錯誤 401.1 - 未經授權:訪問由於憑據無效被拒絕。
原因分析:
由於使用者匿名訪問使用的帳號是IUSR_機器名,因此如果此帳號被禁用,將造成使用者無法訪問。
解決辦法:
控制台->管理工具->電腦管理->本機使用者和組,將IUSR_機器名帳號啟用。