首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET 追蹤功能完整指南:從頁面級到應用程式級配置

     編輯:關於ASP.NET

為什麼需要追蹤?

傳統 ASP 開發者習慣用 Response.Write 印出變數值做除錯,但這會汙染頁面輸出、佈局錯亂,且上線前必須逐行移除,極易遺漏或誤刪。ASP.NET 內建的追蹤功能 解決這些痛點:允許在程式碼中寫入診斷訊息,部署上線時無需移除,僅透過設定啟用/停用即可。

追蹤運作機制

啟用追蹤後,ASP.NET 會在頁面輸出末端附加一組診斷資訊表格,包含:

  1. 要求詳細資料:SessionID、要求時間、編碼、UserAgent 等。
  2. 追蹤資訊:自訂追蹤訊息(Trace.Write/Trace.Warn)、分類、時間戳記。
  3. 控制項樹狀結構:頁面所有控制項 ID、型別、ViewState 大小、ControlState 大小。
  4. Session / Application 狀態:鍵值對清單。
  5. Cookies / Headers / QueryString / Form 變數:完整集合內容。
  6. 伺服器變數:HTTP 伺服器變數集合。

此外,應用程式級追蹤會將最近 N 筆要求的追蹤資訊儲存在記憶體中,可透過 trace.axd 檢視器瀏覽歷史紀錄。

頁面級啟用與配置

在 @Page 指令設定 Trace="true":

<%@ Page Language="vb" Trace="true" TraceMode="SortByTime" %>
  • TraceMode:SortByTime(預設,依時間排序)或 SortByCategory(依分類字母排序)。
  • 頁面級設定優先於應用程式級設定。

應用程式級配置 (web.config)

<configuration>
  <system.web>
    <trace 
        enabled="true" 
        pageOutput="false" 
        requestLimit="20" 
        traceMode="SortByTime" 
        localOnly="true" 
    />
  </system.web>
</configuration>
屬性說明預設值
enabled總開關false
pageOutput是否在每頁末端顯示追蹤資訊false
requestLimit記憶體中保留的追蹤要求數上限10
traceModeSortByTime / SortByCategorySortByTime
localOnlytrue 時 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")

trace.axd 追蹤檢視器

啟用應用程式級追蹤且 localOnly="false" (或本機瀏覽) 時,請求 https://your-site/trace.axd 即可看到:

  • 應用程式所有已追蹤要求的摘要清單(時間、URL、狀態碼、處理時間)。
  • 點選任一要求可查看完整追蹤詳情,內容同頁面級輸出。
  • 「Clear Current Trace」按鈕可清空記憶體緩衝區。

實務最佳化建議

  1. 分類管理:善用 category 參數(如 "DB"、"Auth"、"UI"),配合 SortByCategory 快速篩選。
  2. 避免敏感資料洩漏:追蹤輸出包含表單欄位、Cookies、Headers,生產環境務必設 localOnly="true" 或關閉 pageOutput。
  3. 效能監控:觀察「控制項樹」中的 ViewState 大小,找出過大的控制項優化或停用 ViewState。
  4. 條件式編譯:搭配 #If DEBUG Then ... #End If 或 [Conditional("TRACE")] 屬性,讓追蹤程式碼在 Release 版本自動移除,進一步降低開銷。

結語

ASP.NET 追蹤功能是開發與維運階段的利器,善用頁面級即時診斷與應用程式級歷史回顧,能大幅縮短問題排查時間。記住:開發時全開、測試時保留、生產環境僅開 trace.axd 且限本機存取,兼顧可見性與安全性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved