使用 IIS 7 中的追蹤對失敗的要求進行疑難解答
適用於:網際網路資訊服務 7.0
注意
本文適用於 IIS 7.0。 如需較新版本,請參閱 在 IIS 8.5 中使用追蹤對失敗的要求進行疑難解答。
要求型追蹤可在獨立 IIS 伺服器和 Azure Web 應用程式上使用,並提供一種方式來判斷您的要求究竟發生的情況,以及為什麼,如果您可以重現您遇到的問題。 某些要求的效能不佳、其他要求上的驗證相關失敗,或 ASP 或 ASP.NET 的伺服器 500 錯誤,通常很難進行疑難解答,除非您在發生問題時擷取問題的追蹤。 本文討論 IIS 伺服器上的失敗要求追蹤。 如需使用 Azure Web 應用程式執行這項操作的詳細資訊,請參閱使用 Visual Studio 對 Azure App 服務 中的應用程式進行疑難解答。
失敗的要求追蹤是設計來緩衝要求的追蹤事件,而且只有在要求失敗時才會將它們排清到磁碟,您可以在其中提供「失敗」的定義。 如果您想要知道為何收到 404.2 錯誤訊息或要求開始停止回應,請使用失敗的要求追蹤。
本文說明的工作包括:
- 啟用失敗的要求追蹤模組。
- 設定失敗的要求追蹤記錄檔語意。
- 定義要保留失敗要求追蹤的 URL,包括要追蹤的失敗定義和區域。
- 產生失敗狀況並檢視產生的追蹤。
必要條件
安裝 IIS
您必須先安裝 IIS 7 或更新版本,才能執行本文中的工作。 流覽至 以查看 http://localhost/
是否已安裝 IIS。 如果未安裝 IIS,請參閱 在 Windows Server 2008 上安裝 IIS 以取得安裝指示。 安裝 IIS 時,請確定您也安裝下列功能:
- ASP.NET (在萬維網服務 - 應用程式開發功能 - ASP.NET 下)
- 追蹤(在萬維網服務 - 健康情況和診斷 - 追蹤下)
以系統管理員身分登入
請確定您用來登入的帳戶是系統管理員帳戶,或是在 Administrators 群組中。
注意
在 Administrators 群組中,預設不會授與您完整的系統管理員用戶權力。 您必須以系統管理員身分執行應用程式,方法是以滑鼠右鍵按鍵圖示,然後選取 [ 以系統管理員身分執行]。
建立備份
您必須先備份組態,才能執行下列各節中的工作。
若要備份組態,請遵循下列步驟:
選取 [啟動>所有程式>配件]。
以滑鼠右鍵按兩下 [ 命令提示字元],然後選取 [ 以系統管理員身分執行]。
在命令提示字元中,執行下列命令:
%windir%\system32\inetsrv\appcmd add backup cleanInstall
建立範例內容
瀏覽至
%systemdrive%\inetpub\wwwroot
。將內容移至安全的位置(如果您想要還原現有的內容),或刪除它。
建立空白檔案,並將它 命名為test.asp。
在命令提示字元中,流覽至 \inetpub\wwwroot 中的test.asp檔案。
在test.asp檔案中,貼上下列內容:
<h2>Failed Request Tracing Lab</h2><br> <br>Today's date is <% response.write(Date()) %>
停用 ASP
必須停用此工作的 ASP。 ASP 只會停用為範例,並針對本文中的工作目的。
停用 ASP
開啟 [網際網路資訊服務 (IIS) 管理員] 。
按兩下 ISAPI 和 CGI 限制。
選取 [ 使用中伺服器頁面]。 在 [ 動作] 窗格中,選取 [ 拒絕 ] 以停用 ASP。
啟用失敗的要求追蹤
啟用失敗的要求追蹤之後,您必須設定記錄檔所在的位置。 在這項工作中,您將啟用默認網站的失敗要求追蹤,並指定要放置記錄檔的位置。 接著,您將設定產生失敗記錄的失敗。
步驟 1:啟用月台的失敗要求追蹤並設定記錄檔目錄
使用系統管理員使用者權力開啟命令提示字元,並流覽至 %systemdrive%\windows\system32\inetsrv。
執行
inetmgr
以開啟 IIS 管理員。在 [ 連線] 窗格中,展開計算機名稱、[ 月臺],然後選取 [ 默認網站]。
在 [動作] 窗格的 [設定] 底下,選取 [失敗的要求追蹤]。
在 [ 編輯網站失敗的要求追蹤設定 ] 對話框中,設定下列專案:
- 選取 [ 啟用] 複選框。
- 保留其他設定的預設值。
選取 [確定]。
默認網站現在已啟用失敗的要求追蹤記錄。 檢查 %windir%\system32\inetsrv\config\applicationHost.config 檔案,以確認組態看起來如下所示:
<system.applicationHost>
<sites>
<!-- site & app defaults -->
<site name="Default Web Site" id="1">
<!-- other site configuration -->
<traceFailedRequestsLogging enabled="true" />
</site>
</sites>
</system.applicationHost>
步驟 2:設定您的失敗定義
在此步驟中,您將設定 URL 的失敗定義,包括要追蹤的區域。 您將針對 IIS 針對尚未啟用之擴充功能的任何要求,針對 IIS 所傳回的 404.2 進行疑難解答。 這可協助您判斷您需要啟用的特定擴充功能。
使用系統管理員使用者權力開啟命令提示字元,並流覽至 %systemdrive%\windows\system32\inetsrv。
執行
inetmgr
以開啟 IIS 管理員。在 [ 連線] 窗格中,展開計算機名稱、[ 月臺],然後選取 [ 默認網站]。
按兩下 [失敗的要求追蹤規則]。
選取 [完成]。
在 [ 動作] 窗格中,選取 [ 新增]。
在 [新增失敗的要求追蹤規則精靈] 的 [指定內容至追蹤] 頁面上,選取 [所有內容 ]。。 選取 [下一步]。
在 [ 定義追蹤條件 ] 頁面上,選取 [ 狀態代碼] 複選框,然後輸入 404.2 作為要追蹤的狀態代碼。
選取 [下一步]。
在 [選取追蹤提供者] 頁面的 [提供者] 底下,選取 [WWW 伺服器] 複選框。 在 [區域] 下,選取 [ 安全性] 複選框,並清除所有其他複選框。
您產生的問題會導致擲回安全性錯誤追蹤事件。 一般而言,您可以使用 WWW 伺服器 - 安全性區域組態來診斷驗證和授權(包括 ISAPI 限制清單問題)問題。 不過,由於 FREB.xsl 樣式表單有助於反白顯示錯誤和警告,因此您仍然可以使用預設組態來記錄所有區域和提供者中的所有事件。 在 [詳細資訊] 下,選取 [詳細資訊]。
選取 [完成]。 您應該會看到預設網站的下列定義:
IIS 管理員會使用 <location>
標記將組態%windir%\system32\inetsrv\config\applicationHost.config
寫入檔案。 組態看起來應該如下所示:
<location path="Default Web Site">
<system.webServer>
<tracing>
<traceFailedRequests>
<add path="*">
<traceAreas>
<add provider="WWW Server" areas="Security" verbosity="Verbose" />
</traceAreas>
<failureDefinitions statusCodes="404.2" />
</add>
</traceFailedRequests>
</tracing>
</system.webServer>
</location>
測試並檢視失敗要求記錄檔
在這項工作中,您將產生失敗的要求,並檢視產生的追蹤記錄。 您已設定 IIS 來擷 http://localhost/*.asp
取失敗要求追蹤記錄,其 HTTP 回應碼為 404.2。 現在確認其運作正常。
步驟 1:產生錯誤和失敗要求記錄檔
開啟新的 Internet Explorer 視窗。
輸入下列位址:
http://localhost/test.asp
。您收到「HTTP 錯誤 404.2 - 找不到」錯誤。
步驟 2:檢視失敗要求記錄檔
既然您已產生失敗的要求,請開啟具有系統管理員用戶許可權的命令提示字元,並流覽至 %systemdrive%\inetpub\logs\FailedReqLogFiles\W3SVC1。
執行 start 以從目錄啟動 Internet Explorer 視窗。
請注意以下幾個事項:當 IIS 寫入失敗的要求記錄檔時,它會為每個失敗的要求寫入一個檔案。 freb.xsl 樣式表單也會寫入每個目錄一個。 這可協助您檢視產生的失敗要求記錄檔(例如 此範例中的fr000001.xml )。
以滑鼠右鍵按兩下 404.2 錯誤的記錄檔,然後選取 [以>Internet Explorer 開啟]。 如果這是您第一次開啟失敗的要求追蹤檔案,您必須將about:internet新增至信任的網站清單,因為Internet Explorer的增強式安全性設定預設為啟用。 如果是,您會看到下列內容:
在 [Internet Explorer] 對話方塊中,選取 [新增...],將 about:internet 新增至信任的網站清單。 這可讓 XSL 運作。 您將 about:internet 新增至信任的網站列表之後,會看到下列內容:
失敗要求的摘要會記錄在頂端,錯誤與警告數據表會識別嚴重性中警告、錯誤或重大錯誤的任何事件。 在此範例中 ,WARNING 嚴重性層級是由於 ISAPI RESTRICTION 所造成。 您嘗試載入的映像是 %windir%\system32\inetsrv\asp.dll。
使用文字編輯器直接開啟原始 XML 檔案,並查看每個事件的內容。
摘要
您已完成兩項工作:已設定失敗要求追蹤,以擷取 IIS 傳回 404.2 狀態代碼之任何要求的追蹤,並確認 IIS 已擷取您要求的追蹤。 您也確認 freb.xml 記錄檔未包含您提出的要求的任何其他要求,因為要求沒有 404.2 傳回碼。 當您查閱失敗記錄檔時,您判斷失敗的原因是該要求的擴展名已停用。 您可以嘗試其他非 HTML 頁面(例如.gif或.jpg檔案),並注意記錄檔不會新增這些追蹤。 您也可以藉由在 failureDefinitions 中設定 timeTaken 字段,輕鬆地將此變更為 404,或擷取失敗。
還原備份
既然您已經完成本文中的工作,您可以還原組態的備份。 使用系統管理員使用者權力執行下列命令:
%windir%\system32\inetsrv\appcmd restore backup cleanInstall