共用方式為


使用失敗的要求追蹤來針對傳統 ASP 錯誤進行疑難解答

適用於: 因特網資訊服務

IIS 7.0 和更新版本內建的其中一個絕佳疑難解答功能是失敗要求追蹤,可讓您在伺服器上設定追蹤規則,為您定義的自定義失敗條件建立詳細的疑難解答記錄檔。 例如,您可以建立追蹤規則來建立 HTTP 401 錯誤的記錄檔,以擷取驗證失敗的詳細數據。

IIS 中的失敗要求追蹤可以設定為被動追蹤失敗。 這表示您可以將追蹤規則新增至 IIS,以在發生錯誤時建立記錄檔,即使您並未主動監視伺服器也一般。 例如,本文中的步驟說明如何建立追蹤規則,以在每次發生 HTTP 500 錯誤時建立追蹤記錄。 此被動追蹤方法稱為「無重現」追蹤,這表示您可以定期檢查伺服器的記錄,以檢查是否發生任何失敗,然後只有在 IIS 建立記錄時才採取動作。

使用使用者 存取控制

請務必使用具有完整系統管理許可權的帳戶,遵循本文中的步驟。 若要這樣做,請使用下列兩種方法之一:

  • 使用本機系統管理員帳戶登入您的電腦。
  • 如果您使用具有系統管理許可權的帳戶登入,但不是本機系統管理員帳戶,請使用 [以系統管理員身分執行] 選項開啟所有應用程式和所有命令提示字元會話。

這些條件是必要的,因為 Windows Vista 和 Windows Server 2008 中的使用者帳戶控制 (UAC) 安全性元件會防止系統管理存取 IIS 組態設定。 如需UAC的詳細資訊,請參閱 用戶帳戶控制

安裝失敗的要求追蹤

IIS 上預設不會安裝失敗的要求追蹤。 根據您的 Windows 版本安裝失敗的要求追蹤。

Windows Vista 或 Windows 7 用戶端

  1. 選取 [開始]>[控制台]
  2. [控制台] 中,選取 [程式和功能>] [開啟或關閉 Windows 功能]
  3. 展開 [Internet Information Services>World Wide Web 服務>健康情況和診斷]
  4. 取 [追蹤],然後選取 [ 確定]

Windows Server 2008 或 Windows Server 2008 R2

  1. 取 [開始],指向 [系統管理工具],然後選取 [伺服器管理員]
  2. 在 [伺服器管理員 階層] 窗格中,展開 [角色],然後選取 [Web 伺服器 (IIS)
  3. [Web 伺服器 (IIS) ] 窗格中,捲動至 [ 角色服務 ] 區段,然後選取 [ 新增角色服務]
  4. 在 [新增角色服務精靈] 的 [選取角色服務] 頁面上,選取 [追蹤],然後選取 [下一步]
  5. 在 [ 確認安裝選取專案] 頁面上,選取 [ 安裝]
  6. 在 [ 結果] 頁面上,選取 [ 關閉]

如需安裝 IIS 失敗要求追蹤的詳細資訊,請參閱 追蹤 <追蹤>

如何啟用失敗的要求追蹤

  1. 取 [開始],指向 [ 系統管理工具],然後選 取 [Internet Information Services (IIS) Manager]
  2. [Connections] 窗格中,選取您要設定失敗要求追蹤的伺服器連線、月臺、應用程式或目錄。
  3. 在 [ 動作] 窗格中,選取 [ 失敗的要求追蹤...]
  4. 在 [ 編輯網站失敗的要求追蹤設定 ] 對話框中設定下列選項:
    • 選取 [ 啟用 ] 複選框以啟用追蹤。
    • 保留預設值,或輸入您要在 [目錄 ] 方塊 中儲存失敗要求記錄檔的新目錄。
    • 在 [ 追蹤檔案數目上限 ] 方塊中,輸入您想要儲存的失敗要求追蹤檔案數目。
  5. 選取 [確定]

注意事項

您可以自定義傳統 ASP、ASP.NET 或其他特定條件的設定,但 HTTP 500 錯誤的一般規則有助於探索網頁伺服器上的各種錯誤狀況。

您也可以使用具有下列語法的 AppCmd.exe 公用程式,從命令提示字元啟用失敗的要求追蹤:

appcmd.exe set config -section:system.applicationHost/sites /[name='Default Web Site'].traceFailedRequestsLogging.enabled:"True" /commit:apphost

appcmd.exe set config -section:system.applicationHost/sites /[name='Default Web Site'].traceFailedRequestsLogging.directory:"%SystemDrive%\inetpub\logs\FailedReqLogFiles" /commit:apphost

appcmd.exe set config -section:system.applicationHost/sites /[name='Default Web Site'].traceFailedRequestsLogging.maxLogFiles:"50" /commit:apphost

針對傳統 ASP 錯誤進行疑難解答

在本節中,我們會使用傳統 ASP 產生一些錯誤,以檢查失敗的要求追蹤如何協助識別潛在問題。 即使這些範例是以您知道失敗原因的特定情況為目標,但您可以使用所呈現的技術,針對失敗原因不明的情況進行疑難解答。

針對 HTTP 500 錯誤進行疑難解答

當 ASP 頁面無法執行,而且沒有 IIS 的失敗要求追蹤功能時,IIS 會傳回 HTTP 500 錯誤,這些 HTTP 500 錯誤可能難以進行疑難解答。 這是因為當您未主動對系統進行疑難解答時,通常會發生 ASP 錯誤,因此有時候您唯一的選項是搜尋 IIS 活動記錄,並希望 ASP 模組在記錄專案中傳回失敗要求的其他資訊。 在下列使用失敗要求追蹤的範例中,您有可用來針對情況進行疑難解答的失敗詳細記錄。

如何新增 HTTP 500 錯誤的追蹤規則

下列步驟會設定 HTTP 500 錯誤的失敗要求追蹤規則,您稍後會使用此規則來針對傳統 ASP 錯誤訊息進行疑難解答。

  1. 取 [開始],指向 [ 系統管理工具],然後選 取 [Internet Information Services (IIS) Manager]
  2. [Connections] 窗格中,移至您要設定失敗要求追蹤的連線、網站、應用程式或目錄。
  3. 在 [ 首頁] 窗格中,按兩下 [ 失敗的要求追蹤規則]
  4. 在 [ 動作] 窗格中,選取 [ 新增...]。
  5. 在 [新增失敗的要求追蹤規則精靈] 的 [指定要追蹤的內容] 頁面上,您通常會選取要追蹤的內容類型。 在此情況下,接受所有內容的預設值,然後選取 [ 下一步]
  6. 在 [ 定義追蹤條件 ] 頁面的 [ 狀態代碼] (的 [) ] 文本框中輸入 500,以追蹤 HTTP 500 錯誤,然後選取 [ 下一步]
  7. 在 [ 選取追蹤提供者] 頁面上,接受預設值,然後選取 [ 完成]

建立叫用無效 COM 類別的頁面

在本節中,您會檢查嘗試建立無效 COM 類別實例的 ASP 頁面,而這種情況最常是由拼錯有效的 COM 類別所產生。 若要測試此問題,請將下列 ASP 程式代碼儲存為 啟用 HTTP 500 錯誤失敗要求追蹤之網站的 wwwroot 資料夾中Bad_class.asp:

<html>
<body>
<h1>Bad Class</h1>
<%
   Set objObject = CreateObject("Bad.Class.Name")
%>
</body>
</html>

當您使用網頁瀏覽器流覽至此檔案時,IIS 應該會傳回 HTTP 500 錯誤訊息,而 IIS 會建立在 %SystemDrive%\Inetpub\FailedRequestLogFiles\W3SVBreakn 資料夾中建立的失敗要求追蹤記錄檔,其中 W3SVBreakn 預設會包含 IIS 管理員中所列網站的唯一標識符。 失敗的要求追蹤記錄是 XML 檔案,而 IIS 會建立 XSL 檔案,將 XML 轉換成您可以在 Internet Explorer 中開啟的呈現格式。

在 Internet Explorer 中讀取追蹤記錄

當您使用 Internet Explorer 開啟失敗的要求追蹤記錄檔時,要求 摘要中會顯示各種資訊。 此摘要包含失敗狀況的一般環境資訊,例如執行URL、應用程式集區、驗證類型和用戶名稱,以及其他資訊。 您會注意到失敗的原因為狀態代碼,且狀態為 HTTP 500 錯誤。

在摘要的 [ 錯誤和警告 ] 區段中,您會看到 檢視追蹤 連結,如下圖所示:

瀏覽器視窗的螢幕快照,其中顯示失敗追蹤記錄錯誤的要求摘要。

當您選取 檢視追蹤 連結時,Internet Explorer 會跳至發生 ASP 腳本失敗的追蹤區段。 如果您展開個別追蹤事件,可以檢視事件的特定詳細數據,例如實體檔案路徑、行號、ASP 錯誤碼和描述,以及導致失敗的ASP程式代碼摘錄,在此情況下,嘗試具現化無效的 COM 類別。

下圖顯示範例:

瀏覽器視窗的螢幕快照,其中顯示發生錯誤的追蹤區段。

針對慢速頁面進行疑難解答

您可以設定失敗要求追蹤,為超過您指定時間間隔的頁面產生記錄檔,而不只是針對 HTTP 錯誤。 在實際範例中,如果您的 Web 使用者抱怨網站的某些部分有時看起來很慢,但不知道哪些頁面似乎受到影響,您可以建立時間間隔的追蹤規則,以在任何頁面超過該間隔時建立記錄檔。 這可讓您等候 IIS 建立列出頁面的記錄檔,將疑難解答範圍縮小至任何受影響的頁面。 如果沒有失敗的要求追蹤,您可以查詢 IIS 活動記錄中需要很長時間才能執行的頁面,但只會將範圍縮小到發生問題的頁面清單,而非問題本身。 在下列範例中,您會在慢速頁面中找到失敗來源。

如何新增慢速內容的追蹤規則

下列步驟會針對超過特定期間的要求設定失敗的要求追蹤規則,您稍後會使用此規則來針對慢速 ASP 頁面進行疑難解答。

  1. 取 [開始],指向 [ 系統管理工具],然後選 取 [Internet Information Services (IIS) Manager]
  2. [Connections] 窗格中,移至您要設定失敗要求追蹤的連線、網站、應用程式或目錄。
  3. 在 [ 首頁] 窗格中,按兩下 [ 失敗的要求追蹤規則]
  4. 反白顯示您在上一個範例中建立的規則,然後在 [動作] 窗格中選取 [移除]。
  5. 在 [ 動作] 窗格中,選取 [ 新增...]。
  6. 在 [新增失敗的要求追蹤規則精靈] 的 [指定要追蹤的內容] 頁面上,您通常會選取要追蹤的內容類型。 在此情況下,接受所有內容的預設值,然後選取 [ 下一步]
  7. 在 [ 定義追蹤條件] 頁面上:
    • 清除 狀態代碼 ()
    • 取) 秒 (所花費的時間
    • 輸入 5 作為秒數。
    • 選取 [下一步]
  8. 在 [ 選取追蹤提供者] 頁面上,接受預設值,然後選取 [ 完成]

建立無止盡循環的頁面

在此錯誤狀況中,您會檢查無止盡循環的頁面。 當使用者會話無法正確結束迴圈時,例如當您的程式代碼在資料庫數據表中的清單記錄中執行迴圈時,通常會造成這個問題。 若要測試此問題,請將下列 ASP 程式代碼 儲存為已 啟用失敗要求追蹤之網站的 wwwroot 資料夾中Slow_page.asp:

<html>
<body>
<h1>Slow Page</h1>
<%
   Do
      If Response.IsClientConnected = False Then
         Exit Do
      End If
   Loop
%>
</body>
</html>

當您使用網頁瀏覽器流覽至此檔案時,應該不會在網頁瀏覽器中看到任何錯誤,但您的瀏覽器可能永遠不會傳回頁面,且最終會逾時。

注意事項

此頁面會在您關閉網頁瀏覽器之後寫入以結束迴圈。 如果您想要在達到腳本逾時之前結束迴圈,您應該在十秒後手動關閉瀏覽器。

五秒之後,IIS 預設會在 SystemDrive%%\Inetpub\FailedRequestLogFiles\W3SVSecurityn 資料夾中建立失敗的要求追蹤記錄檔,其中 W3SVBreakn 包含網站的唯一標識符,如 IIS 管理員中所列。

在 Internet Explorer 中讀取追蹤記錄

如上一個範例所示,當您使用 Internet Explorer 開啟失敗的要求追蹤記錄檔時,重要資訊會顯示在 要求摘要中。 此摘要包含失敗狀況的一般環境資訊,例如執行URL、應用程式集區、驗證類型和用戶名稱,以及其他資訊。 請注意,失敗的原因是所花費的時間量,而時間稍微超過五秒,這是您在失敗要求追蹤規則中輸入的時間。

注意事項

您也會注意到回應的 HTTP 狀態代碼是 HTTP 200,這是成功的回應。 這是經常讓診斷慢速頁面的其中一個因素-回應會成功,因而更難以找到它們。

在摘要的 [ 錯誤和警告 ] 區段中,您會看到 檢視追蹤 連結,如下圖所示:

瀏覽器視窗的螢幕快照,其中顯示失敗追蹤記錄警告的要求摘要。

當您選取檢視 追蹤連結時,Internet Explorer 會移至發生 ASP 腳本失敗的追蹤區段。 如果您展開個別追蹤事件,您可以檢視事件的特定詳細數據,例如實體檔案路徑、行號、ASP 錯誤碼和描述,以及建立記錄檔時所執行的 ASP 程式代碼摘要。 藉由使用這項資訊,您可以檢查 ASP 頁面,並找出在永不結束迴圈內執行的程式代碼行。

下圖顯示範例:

瀏覽器視窗的螢幕快照,其中顯示發生警告的追蹤區段。

其他相關資訊

如需 IIS 中失敗要求追蹤的詳細資訊,請參閱下列文章: