共用方式為


使用 IIS 7 的追蹤功能來對失敗的要求進行疑難排解

適用於:網際網路資訊服務 7.0

注意

本文適用於 IIS 7.0。 如需查看較新版本,請參閱 IIS 8.5 中使用追蹤解決失敗請求疑難問題

要求型追蹤可在獨立 IIS 伺服器和 Azure Web 應用程式上使用,並提供一種方式來判斷您的要求究竟發生的情況,以及為什麼,如果您可以重現您遇到的問題。 某些要求的效能不佳、其他要求上的驗證相關失敗,或 ASP 或 ASP.NET 的伺服器 500 錯誤,通常很難進行疑難解答,除非您在發生問題時擷取問題的追蹤。 本文討論 IIS 伺服器上的失敗要求記錄追蹤。 如需使用 Azure Web 應用程式執行這項操作的詳細資訊,請參閱使用 Visual Studio 對 Azure App 服務 中的應用程式進行疑難解答。

失敗要求追蹤(Failed Request Tracing)設計用來緩衝要求的追蹤事件,並且只有在要求被定義為失敗時才會將這些事件寫入磁碟,您可以在此提供「失敗」的定義。 如果您想知道為什麼收到 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. 開啟 [網際網路資訊服務 (IIS) 管理員] 。

  2. 按兩下 ISAPI 和 CGI 限制

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

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

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

啟用失敗請求追蹤

啟用失敗的要求追蹤之後,您必須設定記錄檔所在的位置。 在這項任務中,您將啟用預設網站的失敗請求追蹤,並指定要放置記錄檔案的位置。 接著,您將設定故障記錄生成的配置。

步驟 1:啟用月台的失敗要求追蹤並設定記錄檔目錄

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

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

  3. 在 [ 連線] 窗格中,展開計算機名稱、[ 月臺],然後選取 [ 默認網站]。

  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. 在 [ 連線] 窗格中,展開計算機名稱、[ 月臺],然後選取 [ 默認網站]。

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

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

  5. 選取 完成

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

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

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

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

    顯示 [定義追蹤條件] 頁面的螢幕截圖。[狀態代碼] 欄位中選擇了 404 點 2。

  9. 選取 [下一步]。

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

    您產生的問題會導致發生安全性錯誤追蹤事件。 一般而言,您可以使用 WWW 伺服器 - 安全性區域組態來診斷驗證和授權(包括 ISAPI 限制清單問題)問題。 不過,由於 FREB.xsl 樣式表有助於突顯錯誤和警告,因此您仍然可以使用預設配置來記錄所有區域和提供者中的所有事件。 在 冗長 下,選取 冗長

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

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

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

IIS 管理員會使用 %windir%\system32\inetsrv\config\applicationHost.config 標記將組態<location>寫入檔案。 組態看起來應該如下所示:

<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 回應碼為 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. 執行 start 以從目錄啟動 Internet Explorer 視窗。

    顯示 Internet Explorer 瀏覽至 W 3 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 的螢幕快照。已選取 [要求摘要] 索引卷標,並列出兩個警告。

    失敗請求的摘要會記錄在頂端,錯誤與警告數據表會識別出在嚴重性中屬於警告錯誤重大錯誤的任何事件。 在此範例中,警告 嚴重性層級是由於 ISAPI RESTRICTION 所造成。 您嘗試載入的映像是 %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