提到ASP.NET跟蹤模式,不能不提到ASP程式。ASP程式中在WEB頁面上顯示出某些變數當時的值,常常使用Response.Write進行輸入,這在ASP程式中確實是一種很好的解決方案,但是,由於ASP.NET運行機理,這種方法在ASP.NET中會存在不少問題。
一、ASP.NET跟蹤模式
1.介紹
提到ASP.NET跟蹤模式,不能不提到ASP程式。ASP程式中在WEB頁面上顯示出某些變數當時的值,常常使用Response.Write進行輸入,這在ASP程式中確實是一種很好的解決方案,但是,由於ASP.NET運行機理,這種方法在ASP.NET中會存在不少問題。問題總是要解決,ASP.NET推出了允許直接在代碼中編寫調試語句的新功能,從而在將應用程式部署到生產伺服器時,無需將它們從應用程式中移除,該功能叫做跟蹤。它允許在頁中編寫變數或結構、判斷是否符合某個條件,或只是通過頁或應用程式的執行路徑進行跟蹤。為了收集並顯示這些訊息和其他跟蹤資訊,必須啟用頁或應用程式的跟蹤,即在@Page指令中設定Trace屬性為true,預設為false。
2.啟用跟蹤會發生什麼
當啟用跟蹤時,ASP.NET將將為我們做兩件很重要的事情:
(1)ASP.NET將一系列診斷資訊表緊接著追加在頁輸出之後。還將該資訊發送到跟蹤查看器應用程式(只有當已啟用了應用程式的跟蹤時)。
(2)ASP.NET在追加效能資料的Trace Information表中顯示自訂診斷訊息。指定的診斷資訊和跟蹤訊息追加在發送到請求瀏覽器的頁輸出中。或者,可以在單獨的跟蹤查看器(trace.axd)中查看該資訊,該查看器顯示給定應用程式中每頁的跟蹤資訊。當ASP.NET處理頁請求時,該資訊可以協助查清錯誤或不希望得到的
結果。
只有在啟用了跟蹤後才處理並顯示跟蹤語句。可以控制是否將跟蹤顯示到頁上、顯示到跟蹤查看器或既顯示到頁上又顯示到跟蹤查看器。
3.ASP.NET 跟蹤資訊
可以在 ASP.NET 頁的末尾或跟蹤查看器中查看追加的跟蹤資訊。兩種情況下顯示的資訊是相同的。ASP.NET 將跟蹤資訊組織在一系列的表中。跟蹤資訊按下列順序顯示:
(1)請求詳細資料
“請求詳細資料”部分顯示關於當前請求和響應的常規資訊。
值 |
說明 |
會話 ID |
指定請求的會話標識。 |
請求的時間 |
發出請求的時間。 |
請求編碼 |
請求的字元編碼。 |
請求類型 |
HTTP 方法(GET 或 POST)。 |
狀態碼 |
與響應關聯的狀態碼值。有關更多資訊,請參見位於 World Wide Web Consortium (W3C) Web site(全球資訊網協會 (W3C) 網站)上的 RFC 2616。 |
響應編碼 |
響應的字元編碼。 |
(2)跟蹤資訊
“跟蹤資訊”部分顯示頁級事件流。如果建立了自訂跟蹤訊息,這些訊息也將顯示在“跟蹤資訊”部分。
值 |
說明 |
類別 |
Warn 或 Write 方法調用中指定的自訂跟蹤類別(如果有的話)。 |
訊息 |
Warn 或 Write 方法中指定的自訂跟蹤訊息(如果有的話)。 |
自第一個跟蹤語句以來的時間(秒) |
自處理第一條跟蹤訊息以來的已耗用時間(以秒為單位)。第一條跟蹤訊息顯示在列表頂端。 |
自上一個跟蹤語句以來的時間(秒) |
處理當前跟蹤訊息與處理上一個跟蹤訊息之間經過的時間(以秒為單位)。 |
(3)控制項樹
“控制項樹”部分顯示有關在頁中建立的 ASP.NET 伺服器控制項的資訊。
值 |
說明 |
控制項 ID |
控制項的標識。如果尚未指定控制項的 ID 屬性,則 ASP.NET 使用 UniqueID 屬性產生 ID。 |
類型 |
控制項的完全限定類型。 |
呈現大小位元組數 |
所呈現的控制項(包括子控制項)的大小(以位元組為單位)。這是發送到瀏覽器的實際 HTML、XML 或其他格式的大小。 |
ViewState 大小位元組數 |
控制項的檢視狀態(不包括子控制項)的大小(以位元組為單位)。 |
ControlState 大小位元組數 |
控制項的控制項狀態(不包括子控制項)的大小(以位元組為單位)。 |
(4)工作階段狀態
“工作階段狀態”部分顯示有關儲存在工作階段狀態中的值(如果有的話)的資訊。
值 |
說明 |
工作階段金鑰 |
儲存在工作階段狀態中的資料的密鑰(如果有的話)。 |
類型 |
儲存資料的對象的完全限定類型。 |
值 |
儲存在工作階段狀態中的資料的字串表示形式(如果有的話)。 |
(4)應用程式狀態
“應用程式狀態”部分顯示關於儲存在應用程式狀態中的值(如果有的話)的資訊。
值 |
說明 |
應用程式鍵 |
儲存在應用程式狀態中的資料的鍵(如果有的話)。 |
類型 |
儲存資料的對象的完全限定類型。 |
值 |
儲存在應用程式狀態中的資料(如果有)的字串表示形式。 |
(5)Cookie 集合
“請求 Cookie”和“響應 Cookie”部分顯示對於每個請求和響應在瀏覽器與伺服器之間傳遞的 Cookie 的有關資訊。該部分既顯示持久性 Cookie,也顯示工作階段 Cookie。ASP.NET 自動建立一些 Cookie,如用於基於 Cookie 的工作階段狀態和 Forms 身分識別驗證的 Cookie。有關更多資訊,請參見 ASP.NET Cookies。
值 |
說明 |
名稱 |
Cookie 的名稱。 |
值 |
Cookie 的值,如果 Cookie 為多值,則為子項和值。 |
大小 |
Cookie 的大小(以位元組為單位)。 |
(6)標題集合
“標題集合”部分顯示關於請求和響應訊息的標題成對的名稱和數值(提供關於訊息體或所請求的資源的資訊)的資訊。標題資訊用於控制請求訊息的處理方式和響應訊息的建立方式。有關 HTTP 標題的更多資訊,請參見位於 World Wide Web Consortium (W3C) Web site(全球資訊網協會 (W3C) 網站)上的 RFC 2616。
(8)表單集合
“表單集合”部分顯示名稱/值對,這些名稱值/對顯示在 POST 操作(回傳)期間的請求中提交的表單元素值(控制項值)。
值 |
說明 |
名稱 |
表單變數的名稱。 |
值 |
表單變數的值。 |
(9)Querystring 集合
“Querystring 集合”部分顯示在 URL 中傳遞的值。在 URL 中,查詢字串資訊通過問號 (?) 與路徑資訊分隔開;多個查詢字串元素用 & 符分隔開。查詢字串成對的名稱和數值以等號 (=) 分隔。HttpRequest 對象的 QueryString 屬性返回查詢字串變數的 NameValueCollection。
值 |
說明 |
名稱 |
查詢字串變數的名稱。 |
值 |
查詢字串變數的值。 |
(10)伺服器變數
“伺服器變數”部分顯示伺服器相關的環境變數的集合和請求標題資訊。HttpRequest 對象的 ServerVariables 屬性返回伺服器變數的 NameValueCollection。
值 |
說明 |
名稱 |
伺服器變數的名稱。 |
值 |
伺服器變數的值。 |