我在 IIS 8 上設置了失敗請求跟踪,但它沒有按預期記錄錯誤;有一個 ASP Classic 頁面產生“500 Internal Server Error”,但 FailedReqLogFiles 資料夾為空。這是我的設定:
已安裝失敗請求追蹤模組
為了追蹤 ASP Classic 頁面產生的錯誤 #500,我設定了以下規則:
<traceFailedRequests>
<add path="*">
<traceAreas>
<add provider="ASP" verbosity="Verbose" />
<add provider="ISAPI Extension" verbosity="Verbose" />
<add provider="WWW Server" areas="Authentication,Security,Filter,StaticFile,CGI,Compression,Cache,RequestNotifications,Module,FastCGI,WebSocket,RequestRouting" verbosity="Verbose" />
</traceAreas>
<failureDefinitions timeTaken="00:00:00" statusCodes="500-999" />
</add>
</traceFailedRequests>
enabled="true"
由於我在網站預設設定中設定了 100 多個網站:
<siteDefaults>
<traceFailedRequestsLogging enabled="true" directory="%SystemDrive%\inetpub\logs\FailedReqLogFiles" maxLogFiles="50" />
- 最後我創建了一個拋出錯誤的測試頁面:
<%
Option Explicit
Response.Write a ' Variable is undefined: 'a'
%>
錯誤如預期記錄,%SystemDrive%\inetpub\logs\FailedReqLogFiles
但實際內容頁面產生的錯誤則不然。這些頁面的不同之處在於它們是透過重寫模組來呼叫的,並且 URL 看起來像https://example.com/about.html代替https://example.com/about.asp
如何解決這個問題?
答案1
在本文有一條註釋說:
如果在 URL 重寫模組之後安裝失敗請求跟踪,則追蹤提供者中的「重寫」區域可能不可用。如果您沒有看到其中列出的“重寫”區域,請轉到“新增/刪除程式”,然後在修復模式下執行 URL 重寫模組安裝程式。
我重新安裝了 URL 重寫模組,然後重新建立了失敗的請求追蹤規則,確保「WWW 伺服器」提供者的「區域」部分存在(並選擇了「重寫」)。
失敗的請求隨後被記錄,並包含事件檢視器中不存在的信息,例如錯誤頁面的完整 URL 和堆疊追蹤