傳統 ASP 開發者習慣用 Response.Write 印出變數值做除錯,但這會汙染頁面輸出、佈局錯亂,且上線前必須逐行移除,極易遺漏或誤刪。ASP.NET 內建的追蹤功能 解決這些痛點:允許在程式碼中寫入診斷訊息,部署上線時無需移除,僅透過設定啟用/停用即可。
啟用追蹤後,ASP.NET 會在頁面輸出末端附加一組診斷資訊表格,包含:
Trace.Write/Trace.Warn)、分類、時間戳記。此外,應用程式級追蹤會將最近 N 筆要求的追蹤資訊儲存在記憶體中,可透過 trace.axd 檢視器瀏覽歷史紀錄。
在 @Page 指令設定 Trace="true":
<%@ Page Language="vb" Trace="true" TraceMode="SortByTime" %>
TraceMode:SortByTime(預設,依時間排序)或 SortByCategory(依分類字母排序)。<configuration>
<system.web>
<trace
enabled="true"
pageOutput="false"
requestLimit="20"
traceMode="SortByTime"
localOnly="true"
/>
</system.web>
</configuration>
| 屬性 | 說明 | 預設值 |
|---|---|---|
| enabled | 總開關 | false |
| pageOutput | 是否在每頁末端顯示追蹤資訊 | false |
| requestLimit | 記憶體中保留的追蹤要求數上限 | 10 |
| traceMode | SortByTime / SortByCategory | SortByTime |
| localOnly | true 時 trace.axd 僅允許本機瀏覽 | true |
' 一般資訊
Trace.Write("Category", "Message")
' 警告資訊(紅色顯示)
Trace.Warn("Category", "Warning message")
' 附帶例外狀況
Try
' ...
Catch ex As Exception
Trace.Warn("DB Error", "Connection failed", ex)
End Try
' 條件式追蹤(僅符合條件才寫入)
Trace.WriteIf(userCount > 1000, "HighLoad", "User count exceeds threshold")
啟用應用程式級追蹤且 localOnly="false" (或本機瀏覽) 時,請求 https://your-site/trace.axd 即可看到:
category 參數(如 "DB"、"Auth"、"UI"),配合 SortByCategory 快速篩選。localOnly="true" 或關閉 pageOutput。#If DEBUG Then ... #End If 或 [Conditional("TRACE")] 屬性,讓追蹤程式碼在 Release 版本自動移除,進一步降低開銷。ASP.NET 追蹤功能是開發與維運階段的利器,善用頁面級即時診斷與應用程式級歷史回顧,能大幅縮短問題排查時間。記住:開發時全開、測試時保留、生產環境僅開 trace.axd 且限本機存取,兼顧可見性與安全性。