在 IIS 7 中使用追蹤對失敗的要求進行疑難解答

適用於: Internet Information Services 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 群組中,預設不會授與您完整的系統管理員用戶權力。 您必須以系統管理員身分執行應用程式,方法是以滑鼠右鍵按鍵圖示,然後選取 [ 以系統管理員身分執行]。

進行備份

您必須先備份組態,再執行下列各節中的工作。

若要備份設定,請遵循下列步驟:

  1. 取 [啟動>所有程式>配件]

  2. 以滑鼠右鍵按兩下 [命令提示字元],然後選取 [ 以系統管理員身分執行]

    顯示命令提示字元操作功能表的螢幕快照,其中已選取 [以系統管理員身分執行]。

  3. 在命令提示字元中,執行下列命令:

    %windir%\system32\inetsrv\appcmd add backup cleanInstall
    

建立範例內容

  1. 瀏覽至 %systemdrive%\inetpub\wwwroot

  2. 如果您想要將現有的內容還原) 或刪除,請將內容移至安全的位置 (。

  3. 建立空白檔案,並將其命名 為test.asp

  4. 在命令提示字元中,流覽至 \inetpub\wwwroot 中的test.asp檔案。

  5. test.asp 檔案中,貼上下列內容:

    <h2>Failed Request Tracing Lab</h2><br>
    <br>Today's date is <% response.write(Date()) %>
    

停用 ASP

此工作必須停用 ASP。 ASP 只會作為範例停用,並基於本文中的工作目的而停用。

停用 ASP

  1. 開啟 Internet Information Services (IIS) Manager。

  2. 按兩下 [ISAPI 和 CGI 限制]

    顯示 [I I S 管理員] 的螢幕快照,其中已選取 [I S A P I] 和 [C G I 限制]。

  3. 選取 [使用中伺服器頁面]。 在 [ 動作] 窗格中,選取 [ 拒絕 ] 以停用 ASP。

    顯示 [I S A P I] 和 [C G I 限制和動作] 窗格開啟的螢幕快照。

啟用失敗的要求追蹤

啟用失敗要求追蹤之後,您必須設定記錄檔的所在位置。 在這項工作中,您將啟用默認網站的失敗要求追蹤,並指定要放置記錄檔的位置。 接著,您將設定要產生失敗記錄的失敗。

步驟 1:啟用網站的失敗要求追蹤和設定記錄檔目錄

  1. 以系統管理員使用者權力開啟命令提示字元,然後流覽至 %systemdrive%\windows\system32\inetsrv

  2. 執行 inetmgr 以開啟 IIS 管理員。

  3. [Connections] 窗格中,依序展開 [計算機名稱] 和 [網站],然後選取 [默認網站]

  4. 在 [ 動作] 窗格的 [ 設定] 底下,選取 [ 失敗的要求追蹤]

    顯示 [設定] 底下 [失敗要求追蹤] 的螢幕快照。

  5. 在 [ 編輯網站失敗的要求追蹤設定 ] 對話方塊中,進行下列設定:

    • 選取 [ 啟用] 複選框。
    • 保留其他設定的預設值。

    顯示 [編輯網站失敗要求追蹤設定] 對話框的螢幕快照,其中已選取 [啟用]。

  6. 選取 [確定]

默認網站現在已啟用失敗的要求追蹤記錄。 檢查 %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 針對尚未啟用之擴充功能的任何要求,針對其傳回的 404.2 進行疑難解答。 這可協助您判斷需要啟用哪些特定延伸模組。

  1. 以系統管理員使用者權力開啟命令提示字元,然後流覽至 %systemdrive%\windows\system32\inetsrv

  2. 執行 inetmgr 以開啟 IIS 管理員。

  3. [Connections] 窗格中,依序展開 [計算機名稱] 和 [網站],然後選取 [默認網站]

  4. 按兩下 [失敗的要求追蹤規則]

    顯示 [默認網站首頁] 窗格的螢幕快照,並已選取 [失敗的要求追蹤規則]。

  5. 選取 [完成]

  6. 在 [ 動作] 窗格中,選取 [ 新增]

  7. 在 [ 新增失敗的要求追蹤規則精 靈] 的 [ 指定要追蹤的內容 ] 頁面上,選取 [ 所有內容 (*) ]。 選取 [下一步]

    顯示 [新增失敗的要求追蹤規則精靈] 的螢幕快照,其中已選取 [所有內容]。

  8. 在 [ 定義追蹤條件] 頁面上,選 取 [狀態代碼 (的 [) ] 複選框,然後輸入 404.2 作為要追蹤的狀態代碼。

    顯示 [定義追蹤條件] 頁面的螢幕快照。狀態代碼會在 [狀態代碼] 字段中選取 404 點 2。

  9. 選取 [下一步]

  10. 在 [ 選取追蹤提供者] 頁面的 [ 提供者] 下,選取 [WWW 伺服器 ] 複選框。 在 [ 區域] 下,選取 [ 安全 性] 複選框,並清除所有其他複選框。

    您產生的問題會導致擲回安全性錯誤追蹤事件。 一般而言,驗證和授權 (包括 ISAPI 限制清單問題,) 可以使用追蹤的 WWW Server - 安全性區域組態來診斷問題。 不過,由於 FREB.xsl 樣 式表單有助於醒目提示錯誤和警告,因此您仍然可以使用預設組態來記錄所有區域和提供者中的所有事件。 在 [ 詳細資訊] 底下,選取 [ 詳細資訊]

    顯示 [選取追蹤提供者] 頁面的螢幕快照。W W 伺服器選取於 [提供者] 底下,並在 [詳細資訊] 下選取 [安全性]。

  11. 選取 [完成]。 您應該會看到 預設網站的下列定義:

    顯示 [失敗的要求追蹤規則] 窗格的螢幕快照。W W 伺服器列在 [相關聯的提供者] 底下。

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:產生錯誤和失敗要求記錄檔

  1. 開啟新的 Internet Explorer 視窗。

  2. 輸入下列位址: http://localhost/test.asp

  3. 您會收到「HTTP 錯誤 404.2 - 找不到」錯誤。

    顯示標題為 [應用程式預設網站中的伺服器錯誤] 網頁的螢幕快照。在 [錯誤摘要] 底下,顯示 [H T T P 錯誤 404 點 2 找不到]。

步驟 2:檢視失敗要求記錄檔

  1. 既然您已產生失敗的要求,請使用系統管理員使用者權力開啟命令提示字元,並流覽至 %systemdrive%\inetpub\logs\FailedReqLogFiles\W3SVC1

  2. 執行 [開始 ] 以從目錄啟動 Internet Explorer 視窗。

    顯示 Internet Explorer 巡覽至 W3 S V C 1 路徑的螢幕快照。列出兩個檔案:freb 和 f r 0 0 0 0 0 1。

  3. 請注意以下幾件事:當 IIS 寫入失敗的要求記錄檔時,它會針對每個失敗的要求寫入一個檔案。 也會寫入 freb.xsl 樣式表單,每個目錄一個。 當您檢視產生的失敗要求記錄檔時,這會 (,例如此範例 ) 中的fr000001.xml

  4. 以滑鼠右鍵按兩下 404.2 錯誤的記錄檔,然後選取 [以Internet Explorer開啟>]。 如果這是您第一次開啟失敗的要求追蹤檔案,您必須將 about:internet 新增至信任的網站清單,因為Internet Explorer的增強式安全性設定預設為啟用。 如果是,您會看到下列專案:

    顯示 Internet Explorer 增強式安全性設定對話框的螢幕快照。關於冒號因特網遭到封鎖。

  5. 在 [ Internet Explorer] 對話方塊中,選取 [ 新增...] 以將 about:internet 新增至信任的網站清單。 這可讓 XSL 運作。 在信任的網站清單中新增 about:internet 之後,您會看到下列內容:

    顯示 Internet Explorer 的螢幕快照。已選取 [要求摘要] 索引卷標,並列出兩個警告。

    失敗的要求摘要會記錄在頂端,其中 [錯誤 & 警告] 數據表會識別嚴重中的任何警告、錯誤重大錯誤事件。 在此範例中, WARNING 嚴重性層級是由於 ISAPI 限制所致。 您試著載入的映像 %windir%\system32\inetsrv\asp.dll

  6. 使用文字編輯器直接開啟原始 XML 檔案,並查看每個事件的內容。

摘要

您已完成兩項工作:已設定失敗要求追蹤,以擷取 IIS 以 404.2 狀態代碼傳回之任何要求的追蹤,並確認 IIS 已擷取您要求的追蹤。 您也確認 freb.xml 記錄檔未包含您所提出要求的任何其他要求,因為要求沒有 404.2 傳回碼。 當您查閱失敗記錄檔時,您判斷失敗的原因是該要求的擴充功能已停用。 您可以嘗試其他非 HTML 頁面 (,例如 .gif 或 .jpg 檔案) ,並注意記錄檔不會新增這些追蹤。 您也可以輕鬆地將此值變更為 404,或藉由在 failureDefinitions 中設定 timeTaken 字段來擷取超過 30 秒的要求時擷取失敗。

還原您的備份

現在您已完成本文中的工作,您可以還原組態的備份。 使用系統管理員使用者權力執行下列命令:

%windir%\system32\inetsrv\appcmd restore backup cleanInstall