IIS常見問題及解答

2010-09-03 23:04:43來源:西部e網(wǎng)作者:

(IIS問題專家Brett Hill提供了這些答案)
1. 我怎樣對IIS設(shè)置進(jìn)行備份?
2. 什么工具能幫助我施加一個負(fù)載并進(jìn)行應(yīng)用程序的強(qiáng)度測試?
3. 當(dāng)Localstart.asp返回了一個“正在創(chuàng)建中”響應(yīng)時,發(fā)生了什么事情?
4. 能在

(IIS問題專家Brett Hill提供了這些答案)
1. 我怎樣對IIS設(shè)置進(jìn)行備份?
2. 什么工具能幫助我施加一個負(fù)載并進(jìn)行應(yīng)用程序的強(qiáng)度測試?
3. 當(dāng)Localstart.asp返回了一個“正在創(chuàng)建中”響應(yīng)時,發(fā)生了什么事情?
4. 能在Microsoft Windows XP Home Edition中安裝IIS或PWS嗎?
5. ISAPI篩選器能在一個單獨(dú)的進(jìn)程空間中運(yùn)行嗎?
6. 我在哪能獲得這樣的示例代碼--它顯示了如何在使用WebDAV的ASP中編輯文檔?
7. 當(dāng)我試圖用ASP去訪問一個數(shù)據(jù)庫時,我得到了一個“拒絕訪問”的回應(yīng),這是什么原因?
8. 如何在沒有恢復(fù)原始設(shè)置的情況下運(yùn)行IIS鎖定工具?
9. 在我的intranet環(huán)境中,如何處理“server-side include”語法,而不必重新命名所有的文件?
10. 在Windows 2000 Professional中,我怎樣做才能讓域用戶來管理虛擬目錄,以便域用戶能夠創(chuàng)建和管理他們自己的虛擬目錄?




問: 我怎樣對IIS設(shè)置進(jìn)行備份?

答: 有多種方法可以用來完成此項(xiàng)工作。在Internet信息服務(wù)管理器控制臺(IIS插件)中所設(shè)置的屬性和值都被儲存在Metabase.bin文件中,缺省情況下,這個文件位于“C:\winnt\system32\inetsrv”目錄中。在IIS 5.0中,你可以從內(nèi)置的IIS插件中來備份元數(shù)據(jù)。如果需要進(jìn)行此工作,請選擇桌面上的計(jì)算機(jī)圖標(biāo)然后單擊右健。然后再選擇 “備份/恢復(fù)配置”。然后你就可以選擇備份現(xiàn)有元數(shù)據(jù)設(shè)置或者恢復(fù)以前的版本。與此相同的選項(xiàng)在MetaEdit 2.2中也可找到。

當(dāng)你以這種方式保存了元數(shù)據(jù)時,你的備份將以.md0文件的格式儲存在C:\winnt\system32\instrv\metaback文件夾中。當(dāng)你執(zhí)行備份時,文件將使用你所指定的名稱,如Pre-Lockdown.md0。如果你使用相同的文件名創(chuàng)建了多個備份,他們將使用數(shù)字逐漸遞增的擴(kuò)展名,如Backup.md0,Backup.md1等等。

在你的元數(shù)據(jù)嚴(yán)重?fù)p壞的情況下,你將不能啟動IIS。此時,你也不能從IIS插件或metaedit中執(zhí)行恢復(fù)操作。如果真的發(fā)生了類似情況,你就可以通過從備份文件夾中選用最合適的.md0(.md1等等)元數(shù)據(jù)備份文件來替換Metabase.bin。如果你的備份文件沒有錯誤,IIS將會立刻啟動。

制作元數(shù)據(jù)的備份還有其它兩個意義。你可以使用xcopy,scopy或其它復(fù)制程序來簡單地復(fù)制Metabase.bin文件。你應(yīng)該先停止Internet服務(wù),以保證你的元數(shù)據(jù)是最新的并且不在使用狀態(tài)中。

最后,我們還提供了兩個腳本--metaback.vbs和metarest.vbs--它們位于Inetpub/IISSamples/sdk/admin(如果你在IIS 5.0上安裝了IIS SDK)文件夾中或在IIS Resource Kit/Utility/ADSI Admin Scripts文件夾(如果你安裝了IIS 4.0 Resource Kit)中。這些.vbs腳本使用了一個ADSI命令,它是專門為創(chuàng)建元數(shù)據(jù)備份而提供的。



問: 什么工具能幫助我施加一個負(fù)載并進(jìn)行應(yīng)用程序的強(qiáng)度測試?

答: 有許多工具可以用來實(shí)現(xiàn)這個目的。而且有一些功能完備并且十分有用的你將會發(fā)現(xiàn)有相當(dāng)多的可利用的商業(yè)工具可供您利用被完全裝備了,并且這些工具是有很用的。Microsoft提供了Web Application Stress Tool,在大多數(shù)情況下,對于裝載在Web服務(wù)器上施加負(fù)載來說,并檢查它在一定壓力下是否能夠正常工作這一目的當(dāng)進(jìn)行應(yīng)用程序強(qiáng)度測試時,查看它們的執(zhí)行情況,這個工具是足夠用的。預(yù)先執(zhí)行測試是一個好主意,因?yàn)樵趹?yīng)用程序的設(shè)計(jì)過程中,問題并不會顯現(xiàn)出來,除非在這個服務(wù)器上施加一定負(fù)載被加載了--而且在一個產(chǎn)品成品服務(wù)器上你肯定不希望發(fā)現(xiàn)任何問題。

Web Application Stress Tool有幾個有用的特性,它可以將您包括當(dāng)你在通過Web站點(diǎn)中進(jìn)行的指向并和點(diǎn)擊操作記錄為一個可重新回放的腳本路線時記錄重放腳本的能力。然后當(dāng)你遠(yuǎn)程監(jiān)視服務(wù)器上的性能監(jiān)視計(jì)數(shù)器時,就能同步地在一個或多個客戶端上重新播放這個腳本。另外,你還能指定詳細(xì)資料,如用于測試驗(yàn)證身份驗(yàn)證吞吐量所使用的用戶賬號,以及顯示請求和測試計(jì)劃日程之間的延遲。

當(dāng)你在你安裝了Web Application Stress Tool的時時候,它還在計(jì)算機(jī)上安裝了一個服務(wù),叫名為做“WebTool”的服務(wù)。如果你確信當(dāng)不再需要這個工具時,您可以卸載Web Application Stress Tool。



問: 當(dāng)Localstart.asp返回了一個“正在創(chuàng)建中”響應(yīng)時,發(fā)生了什么事情

答: 這個“正在創(chuàng)建中”頁面應(yīng)該出現(xiàn)在從一個遠(yuǎn)程的IP地址對默認(rèn)的Web站點(diǎn)進(jìn)行訪問的時候。如果你從一個內(nèi)部的IP地址訪問,IIS在線文檔就會被顯示。如果你在Internet Explorer中訪問http://localhost,并且未安裝Default.htm或Default.asp,則Web站點(diǎn)將會運(yùn)行IISStart.asp。IISStart.asp將檢查下面兩個條件:

你是否已經(jīng)敲入輸入了“localhost”。
客戶端的IP地址是否與服務(wù)器端IP地址相匹配。
在任一種情況下,你都將會被重定向到Localstart.asp,然后打開所需要的頁面。

確定這些文件在你的系統(tǒng)上是存在的,并且在“文檔”選項(xiàng)卡標(biāo)簽中調(diào)用的是IISStart.asp。為了確定這些,你可以嘗試寫一段簡短的.asp網(wǎng)頁,來顯示服務(wù)器變量的值,如下:

Your local IP address is 207.46.249.190
The client IP address is 210.82.106.28

如果IP地址沒有被識別,則可能是因?yàn)長ocalstart.asp頁未被調(diào)用。當(dāng)然,你總是可以通過直接使用http://localhost/localstart.asp來調(diào)用它。如果沒有配置默認(rèn)文檔,在直接調(diào)用Localstart.asp時就可能出現(xiàn)問題。腳本將返回下述消息:

目前當(dāng)前,你沒有為用戶設(shè)置一個默認(rèn)文檔。當(dāng)前所有試圖連接到這個站點(diǎn)的用戶都將收到一個“正在創(chuàng)建中”的頁面。



問: 能在Microsoft Windows XP Home Edition中安裝IIS或PWS嗎?

答: Windows XP Home Edition不支持任何版本的IIS,沒有任何可靠的方法能使其運(yùn)行IIS。Windows XP Home Edition并未設(shè)計(jì)成一個Web應(yīng)用程序的開發(fā)平臺。在升級到Windows XP Professional后,你就可以在系統(tǒng)上安裝IIS 5.1,以便利用ASP.Net進(jìn)行開發(fā)工作。在Windows XP Professional上的IIS 5.1是一個全功能的Web服務(wù)器端,但是它只能建立10個并發(fā)連接,這是因?yàn)樗皇且粋工作站操作系統(tǒng)而不是服務(wù)器平臺。Windows XP Home Edition還有一些與Windows XP Professional相同的其它限制,因?yàn)樗彩且粋工作站操作系統(tǒng)而不是服務(wù)器操作系統(tǒng)。大體上,你會發(fā)現(xiàn),在Windows 2000 Professional和Windows 2000 Server或Advanced Server上的IIS 5.0中,這些差別是相類似的。無論怎樣,對于使用.NET Framework來開發(fā)基于Web 的應(yīng)用程序來說,Windows XP Professional才是一個優(yōu)秀的環(huán)境。



問: ISAPI篩選器能在一個單獨(dú)的進(jìn)程空間中運(yùn)行嗎?

答: 為與Web服務(wù)器協(xié)同工作所開發(fā)的應(yīng)用程序都有著特殊的要求。例如,你不能從一個URL中調(diào)用一個Notepad.exe實(shí)例并且希望在客戶端的系統(tǒng)上看到一個記事本窗口。為了從IIS中與請求進(jìn)行交互(并不是CGI),程序必須使用ISAPI編寫。ISAPI是Internet服務(wù)器應(yīng)用程序接口(Internet Server Application Programming Interface)的縮寫。有兩種可執(zhí)行的ISAPI:擴(kuò)展和篩選器。

可以從一個URL中直接調(diào)用ISAPI擴(kuò)展,如http://localhost/myisapi.dll。假設(shè)你已經(jīng)在目錄上配置了IIS,允許腳本和可執(zhí)行程序,并且用戶有執(zhí)行NTFS的許可權(quán)限,則dll將會運(yùn)行。IIS允許你指定應(yīng)用程序是在進(jìn)程內(nèi)(作為Inetinfo部分)運(yùn)行還是在進(jìn)程外(作為IIS 4.0上的MTX部分,或者作為IIS 5.x部分的dllhost)運(yùn)行。當(dāng)一個應(yīng)用程序在進(jìn)程外運(yùn)行時,Inetinfo就從問題中被隔離出來。如果應(yīng)用程序出現(xiàn)故障,Web服務(wù)器也會出現(xiàn)故障。

ISAPI篩選器又是另一個內(nèi)容。ISAPI篩選器能改變進(jìn)入或離開IIS的數(shù)據(jù)流。因此,ISAPI篩選器有著非常強(qiáng)大的功能,能用來實(shí)現(xiàn)客戶日志、驗(yàn)證或更改數(shù)據(jù)流。對IIS 5.0來說,在ISAPI篩選器中實(shí)現(xiàn)的特性包括數(shù)據(jù)壓縮、摘要驗(yàn)證和URLScan。

因?yàn)楹Y選器在IIS中扮演了一個如此重要的角色,所以它們總是作為Inetinfo部分運(yùn)行在過程內(nèi)。因此,正確的ISAPI篩選器結(jié)構(gòu)對服務(wù)器的正常運(yùn)行是必備的。你可能希望與Microsoft 產(chǎn)品支持服務(wù)一起工作來確定問題,因?yàn)樘幚磉@種例外可能是一個較大的挑戰(zhàn)。

基于這個考慮,有兩個新技術(shù)可以使生活更加輕松,IIS 6.0就是其中的一個。由于它是一個新的體系結(jié)構(gòu),所有的ISAPI篩選器都在進(jìn)程外運(yùn)行。這將使Web 服務(wù)器從一個捉摸不定ISAPI篩選器中隔離開來,但這實(shí)際上并沒有真正解決問題。為了解決這個問題,你可以考試使用.NET語言在ISAPI方面做一些工作。通使用C++設(shè)計(jì)ISAPI篩選器相比,使用.NET實(shí)現(xiàn)相同的功能要大為簡單。



問: 我在哪能獲得這樣的示例代碼--它顯示了如何在使用WebDAV的ASP中編輯文檔?

答: 從IIS上的腳本中使用WebDAV的最好方法就是使用ASP.Net的WebClient類。如果你正在使用Windows XP或Windows Server 2003,WebDAV功能就是這個操作系統(tǒng)的一部分。這就允許你在一個Web服務(wù)器上使用HTTP引用一個文件,就像使用一個UNC路徑名稱一樣。例如,你可以用NET USE * http://servername/directory來映射一個驅(qū)動器,然后通過使用驅(qū)動器符號來訪問這個位置。另一方面,你還可以創(chuàng)建一個COM對象,它是一個WebDAV的客戶端。你可以使用這個對象向IIS 5.x或IIS 6.0傳遞WebDAV動詞。

另外,如果你以WebDAV為關(guān)鍵詞搜索MSDN,你將會找到一些例子,它們教你如何使用XML來為Exchange和其它Microsoft服務(wù)器構(gòu)造WebDAV的查詢。在Microsoft Exchange 2000 Server SDK中有一個WebDAV的示例應(yīng)用程序。



問: 當(dāng)我試圖用ASP去訪問一個數(shù)據(jù)庫時,我得到了一個“拒絕訪問”的回應(yīng),這是什么原因?

答: 有一個名為“Filemon”的優(yōu)秀免費(fèi)工具,你可以從Sysinternals.com上獲得它。你可以使用Filemon來快速診斷出絕大多數(shù)的權(quán)限問題,因?yàn)樗軐?shí)時顯示服務(wù)器上的全部文件權(quán)限、調(diào)用的過程名稱及訪問的結(jié)果。因此,無論隱藏多么深的嵌套包含或多么模糊的臨時索引,任何“拒絕訪問”的消息都能被輕松識別。

當(dāng)一個在先前的操作系統(tǒng)上能夠正常工作的應(yīng)用程序在升級后出現(xiàn)問題時,它就無能為力了。但是,這種類型的問題還是有啟發(fā)意義的。IIS 4.0和IIS 5.0之間的一個差異就與COM和COM+之間的一個差異有關(guān)系。在IIS 5.0中,當(dāng)一個COM+對象代表用戶訪問文件時,它的默認(rèn)行為就是使用用戶的安全上下文環(huán)境來完成這些工作。這在IIS 4.0中并不算什么事情。因此,當(dāng)從IIS 4.0向IIS 5.0遷移包含COM的應(yīng)用程序時,你可能需要向文件提供用戶權(quán)限,而在IIS 4.0中并不需要。雖然跟以前相比這有些不方便,但是它在提高應(yīng)用程序安全性設(shè)計(jì)方面的確是一個進(jìn)步。即使是不能使用定制的COM對象去訪問數(shù)據(jù)庫,COM在本地的IIS組件中還是得到了廣泛的應(yīng)用。

這里有一個能夠幫助您理解這種需求的例子,比如,你需要為正在創(chuàng)建數(shù)據(jù)庫的用戶授予請求使用Access臨時文件夾的權(quán)限。更多的信息請查閱Microsoft Knowledge Base中的Q210457和Q271071。



問: 如何在沒有恢復(fù)原始設(shè)置的情況下運(yùn)行IIS鎖定工具?

答: IIS鎖定工具非常有效。這個工具允許你輕松、顯著地增加服務(wù)器的安全性。一旦運(yùn)行了這個工具,它就將其活動的歷史記錄儲存到一個文件中,這個文件的位置是%systemdrive%\%systemdir%\system32\inetsrv。你將在下面的文件中找到這個信息:

Oblt-rep.log
Oblt-once.md0
Oblt-mb.md0
Oblt-undone.log也可能是最新的。

如果你刪除了這些文件,向?qū)Ь蜁䥺,就好像IIS Lockdown tool并未被運(yùn)行一樣。重復(fù)這個過程并沒有什么風(fēng)險。在你這么做之前,一定要制作一個Metabase.bin的副本。

因?yàn)楫?dāng)它第一次運(yùn)行的時候,這個過程將會讓你運(yùn)行鎖定工具,就好像它從未被運(yùn)行過,但并不會“解開”或反轉(zhuǎn)鎖定工具進(jìn)行了一些設(shè)置,所以這個過程應(yīng)該可以正常工作。



問: 在我的intranet環(huán)境中,如何處理“server-side include”語法,而不必重新命名所有的文件?

答: IIS 4.0和IIS 5.0提供了這樣一個選項(xiàng),它不需要你更改所有文件的擴(kuò)展名。ASP處理器也能處理服務(wù)器端的include語法,因此沒有必要使用.stm或者是.asp擴(kuò)展名。那么,這對你又有什么幫助呢?通過在應(yīng)用程序配置中創(chuàng)建一個條目,你可以將.htm 文件映射為由asp.dll處理,這樣,哪些帶有.htm擴(kuò)展名的文件就將由asp.dll來處理。通過使用這種方式,那些含有includes的.htm 文件不用重命名就能被處理。現(xiàn)在你可能在考慮:“這會不會導(dǎo)致我所有的.htm文件都像腳本一樣被處理,從而降低系統(tǒng)的性能呢?”事實(shí)上,在IIS 4.0中,這的確是一個問題;但是,在IIS 5.0中,性能問題并不像你想象中的那么大,并且在IIS 5.1中,甚至?xí)。IIS 5.0有一個特性叫做“Scriptless ASP”(無腳本ASP)用來處理這個特殊的問題。如果一個不包含腳本的文件被提交到ASP處理器,它就不會被解析,只是簡單地作為靜態(tài)頁面發(fā)送出去--在這種特定的情況中是一個有用的特性。



問: 在Windows 2000 Professional中,我怎樣做才能讓域用戶來管理虛擬目錄,以便域用戶能夠創(chuàng)建和管理他們自己的虛擬目錄?

答: 你需要做的最后事情就是將域用戶加入到Power Users組中,因?yàn)檫@樣就可以為域中任何一個擁有用戶帳號的人賦予經(jīng)過提升的權(quán)限。如果你信任域中的每一個成員都可以對系統(tǒng)進(jìn)行很好的管理,這樣做不會有什么問題,但是對于大多數(shù)計(jì)算機(jī)用戶來說,這樣的信任級別是不合適的。

為了在IIS中創(chuàng)建一個虛擬目錄,用戶需要有管理員權(quán)限。之所以這樣設(shè)計(jì),是因?yàn)槿魏文茉赪eb站點(diǎn)上創(chuàng)建虛擬目錄的人也能對虛擬目錄進(jìn)行刪除、重命名、重定向或其它管理工作。

認(rèn)識到這點(diǎn)后,你可能希望不為用戶提供管理員身份就能獲得類似的權(quán)力,在IIS插件中有一個特性(“操作員”標(biāo)簽),能讓你指定一個Web站點(diǎn)操作員(不是管理員),為Web站點(diǎn)創(chuàng)建虛擬目錄。這個特性只有在Windows 2000 Server、Windows 2000 Advanced Server和Windows 2000 Datacenter Server中是可用的。相同的特性也可應(yīng)用于IIS 4.0。

另外,你還可以在IIS Web站點(diǎn)內(nèi)部創(chuàng)建一個虛擬目錄,并將它映射到%systemroot%\%systemdir%\inetsrv\iisadmin。你應(yīng)該保護(hù)這個虛擬目錄的安全,否則那些訪問這個站點(diǎn)的人就能夠管理這個Web站點(diǎn)。還要注意,這只有在Windows 2000 Server,Windows 2000 Advanced Server,和Windows 2000 Datacenter Server (以及IIS 4.0)上面是可行的。

當(dāng)你發(fā)現(xiàn)你自己根據(jù)操作系統(tǒng)的限制將擴(kuò)展權(quán)限授予了其他人或別的工作組,并且試圖將你的工作站當(dāng)作服務(wù)器時,你可能需要安裝一個服務(wù)器操作系統(tǒng)。

 

問: 在Windows 2000 Server上,當(dāng)一個站點(diǎn)需要SSL時,我怎樣才能在相同的站點(diǎn)上使用主機(jī)頭?

答: 讓我們回顧一下SSL和主機(jī)頭的問題,因?yàn)閷IS來說,它的問題一直在常見問題解答的頭五個中。

當(dāng)客戶發(fā)出一個到IIS服務(wù)器的HTTP連接請求時,這個客戶的請求包括一個叫做HOST:的字段,它包括了URL中的Web服務(wù)器請求。例如,如果你的請求將http://www.microsoft.com作為目的地,則瀏覽器將其發(fā)送到服務(wù)器,并一同提交HTTP頭中的其它信息,HOST: http://www.microsoft.com。因?yàn)榇俗侄蔚拿Q是“HOST”,并且它在客戶的HTTP頭中,所以我們把它稱作“主機(jī)頭”。

如果客戶請求建立一個SSL連接,主機(jī)頭字段仍然會包括在請求當(dāng)中,只不過它被包含在這個包的加密部分里(在應(yīng)用層中),因此Web服務(wù)器無法對其進(jìn)行解密,以確定應(yīng)該將請求發(fā)送到哪一個Web站點(diǎn)。

這就產(chǎn)生了一條定律:當(dāng)使用SSL時,不能使用主機(jī)頭來作為識別一個Web站點(diǎn)的主要手段。

如果你確實(shí)想使用帶有主機(jī)頭的SSL,那么會發(fā)生什么情況呢?考慮一下這個情況。你有兩個Web站點(diǎn),其中一個不使用主機(jī)頭,另一個則使用。兩個站點(diǎn)都使用相同的IP地址,并且都配置成使用證書。當(dāng)你利用SSL訪問使用主機(jī)頭的站點(diǎn)時,第一個Web站點(diǎn)會對此做出響應(yīng)。之所以發(fā)生這種情況是因?yàn)椋何覀兪褂肐P地址來識別你希望用來建立連接的站點(diǎn),而不是主機(jī)頭。因?yàn)榈谝粋站點(diǎn)對IP地址和HTTPS有反應(yīng),所以它接受了請求。如果第一個Web站點(diǎn)需要主機(jī)頭,并且在不同的IP地址上,或者沒有證書,那么連接將會失敗。

因此,請考慮你的配置,在你需要SSL的相同站點(diǎn)上,只要不使用主機(jī)頭,你就可以做任何想做的事情。

關(guān)鍵詞:IIS

贊助商鏈接: