更新:2007 年 11 月
ASP.NET 追蹤能夠讓您檢視 ASP.NET 網頁的單一要求診斷資訊。ASP.NET 追蹤能夠讓您依照網頁的執行路徑、在執行階段顯示診斷資訊,以及偵錯應用程式。ASP.NET 追蹤能夠與系統層級追蹤整合,以便在分散式和多層應用程式中提供多重層級的追蹤輸出。
這個主題包含:
ASP.NET 追蹤提供下列功能:
回到頁首
追蹤會將診斷資訊和自訂追蹤訊息附加至頁面的輸出,並將這項資訊傳送給提出要求的瀏覽器。或者,您可以從不同的追蹤檢視器 (Trace.axd) 檢視這項資訊,這個檢視器會顯示 ASP.NET Web 應用程式中每個網頁的追蹤資訊。追蹤資訊可以幫助您調查 ASP.NET 處理網頁要求時所發生的錯誤或不想要的後果。
您可以將個別網頁設定為顯示追蹤資訊。此外,您可以設定應用程式的 Web.config 檔,讓所有網頁都顯示追蹤資訊 (除非網頁明確停用追蹤)。設定應用程式層級追蹤是很有用的,因為您不需要變更個別網頁就可以啟用和停用追蹤。
只有在啟用追蹤時才會處理和顯示追蹤陳述式。您可以控制追蹤是否要顯示到網頁、追蹤檢視器,或顯示到兩者。如需啟用頁面追蹤的詳細資訊,請參閱 HOW TO:啟用 ASP.NET 網頁的追蹤。如需啟用應用程式追蹤的詳細資訊,請參閱 HOW TO:啟用 ASP.NET 應用程式的追蹤。
應用程式層級 ASP.NET 追蹤
您可以使用 Web.config 檔案中的 trace 項目,啟用應用程式層級追蹤。當您啟用應用程式層級追蹤時,ASP.NET 會收集對應用程式各個要求的追蹤資訊,最多達到指定的最大要求數。要求的預設數目為 10。根據預設,當追蹤檢視器到達要求限制時,應用程式會停止儲存追蹤要求。您可以將追蹤設定為儲存最舊的追蹤資料 (捨棄較新的項目) 或最新的追蹤資訊 (捨棄較舊的項目)。
注意事項: |
|---|
當您在 Web.config 檔中啟用整個應用程式的追蹤時,就會對該應用程式的每個網頁收集和處理追蹤資訊。若要覆寫整個應用程式的設定,請將該網頁的 @ Page 指示詞中的 Trace 屬性設定為 false。包括在網頁程式碼中的任何 Write 或 Warn 陳述式只會存放並傳回至追蹤檢視器。 |
檢視追蹤資訊
您可以檢視個別頁面底部的追蹤資訊。此外,在啟用追蹤後,您也可以使用追蹤檢視器 (Trace.axd) 檢視 ASP.NET 所收集和快取的追蹤資訊。如需追蹤顯示之內容的詳細資訊,請參閱本主題稍後的讀取 ASP.NET 追蹤資訊。
如果您想要讓追蹤資訊出現在關聯的網頁結尾處,可以將 trace 項目的 PageOutput 屬性設定為 true。如果您啟用應用程式層級追蹤,但是不想顯示某些網頁的追蹤資訊,可以將這些網頁的 @ Page 指示詞中的 Trace 屬性設定為 false。如需如何設定 ASP.NET 應用程式的詳細資訊,請參閱 ASP.NET 組態概觀。
依預設,應用程式層級追蹤只能在本機 Web 伺服器電腦上檢視。若要讓遠端電腦能夠看見應用程式層級追蹤資訊,可以將 trace 項目的 LocalOnly 屬性設定為 false。
注意事項: |
|---|
若要保護 Web 應用程式的安全,請只在開發或部署應用程式時才使用遠端追蹤功能。確定您已先停用此功能,再將應用程式傳輸至實際執行的 Web 伺服器。若要這麼做,請將 Web.config 檔案中的 LocalOnly 屬性設定為 true。 |
下列範例示範應用程式追蹤設定,此設定會收集最多 40 個要求的追蹤資訊。也可讓伺服器以外之電腦上的瀏覽器顯示追蹤檢視器。
<configuration>
<system.web>
<trace enabled="true" requestLimit="40" localOnly="false" />
</system.web>
</configuration>
寫入自訂 ASP.NET 追蹤訊息
您可以將自訂的追蹤資訊附加至 ASP.NET 頁面中的追蹤顯示,或追蹤記錄檔。可以使用追蹤檢視器檢視寫入追蹤記錄檔的追蹤資訊。如需詳細資訊,請參閱 HOW TO:使用追蹤檢視器檢視 ASP.NET 追蹤資訊。
您可以使用 TraceContext 類別的 Warn 或 Write 方法,撰寫追蹤資訊。兩種方法之間的差異是使用 Warn 方法寫入的訊息會以紅色文字顯示。
下列範例示範如何使用 TraceContext 類別,在 ASP.NET 頁面的結尾顯示追蹤資訊。每個造成回傳的 LinkButton 控制項都會擲回不同的例外狀況。用來初始化 ArgumentException 或 InvalidOperationException 執行個體的錯誤訊息會顯示在追蹤記錄檔中。
<%@ Page Language="VB" Trace="true" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<script runat="server">
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Try
If (IsPostBack) Then
Select Case Request.Form("__EVENTTARGET")
Case "WarnLink"
Throw New ArgumentException("Trace warn.")
Case "WriteLink"
Throw New InvalidOperationException("Trace write.")
Case Else
Throw New ArgumentException("General exception.")
End Select
End If
Catch ae As ArgumentException
Trace.Warn("Exception Handling", "Warning: Page_Load.", ae)
Catch ioe As InvalidOperationException
Trace.Write("Exception Handling", "Exception: Page_Load.", ioe)
End Try
End Sub
</script>
<html >
<head runat="server">
<title>Trace Example</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:LinkButton id="WriteLink"
runat="server"
text="Generate Trace Write" />
<asp:LinkButton id="WarnLink"
runat="server"
text="Generate Trace Warn" />
</div>
</form>
</body>
</html>
<%@ Page Language="C#" Trace="true" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<script runat="server">
void Page_Load(object sender, EventArgs e)
{
try {
if (IsPostBack)
{
switch (Request.Form["__EVENTTARGET"])
{
case "WarnLink":
throw new ArgumentException("Trace warn.");
break;
case "WriteLink":
throw new InvalidOperationException("Trace write.");
break;
default:
throw new ArgumentException("General exception.");
break;
}
}
}
catch (ArgumentException ae) {
Trace.Warn("Exception Handling", "Warning: Page_Load.", ae);
}
catch (InvalidOperationException ioe) {
Trace.Write("Exception Handling", "Exception: Page_Load.", ioe);
}
}
</script>
<html >
<head runat="server">
<title>Trace Example</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:LinkButton id="WriteLink"
runat="server"
text="Generate Trace Write" />
<asp:LinkButton id="WarnLink"
runat="server"
text="Generate Trace Warn" />
</div>
</form>
</body>
</html>
讀取 ASP.NET 追蹤資訊
您可以檢視附加在 ASP.NET 網頁結尾或是追蹤檢視器中的追蹤資訊,而在兩種情況下顯示的資訊都一樣。ASP.NET 會將追蹤資訊整理在一系列表格中。如需如何檢視頁面中之追蹤資訊的詳細資訊,請參閱 HOW TO:啟用 ASP.NET 網頁的追蹤。如需如何檢視追蹤檢視器中之追蹤資訊的詳細資訊,請參閱 HOW TO:使用追蹤檢視器檢視 ASP.NET 追蹤資訊。
追蹤資訊會以下列順序顯示:
要求詳細資料
[要求詳細資料] 區段會顯示目前要求和回應的一般資訊。
值
|
說明
|
|---|
工作階段 ID |
指定要求的工作階段識別。
|
要求的時間 |
發出要求的時間。
|
要求的編碼方式 |
要求的字元編碼方式。
|
要求類型 |
HTTP 方法 (GET 或 POST)。
|
狀態碼 |
與回應相關的狀態碼值。如需詳細資訊,請參閱 World Wide Web Consortium (W3C) 網站 的 RFC 2616。
|
回應的編碼方式 |
回應的字元編碼方式。
|
追蹤資訊
[追蹤資訊] 區段會顯示網頁層級事件的流程。如果您已建立自訂追蹤訊息,訊息也會顯示在 [追蹤資訊] 區段中。
值
|
說明
|
|---|
分類 |
自訂追蹤分類會在 Warn 或 Write 方法呼叫中指定 (如果有)。
|
訊息 |
自訂追蹤訊息會在 Warn 或 Write 方法中指定 (如果有)。
|
從第一項開始 (秒) |
自處理第一個追蹤訊息以來經過的時間 (以秒計)。第一個追蹤訊息會顯示在清單最上方。
|
從最末項開始 (秒) |
處理目前追蹤訊息和前一個追蹤訊息之間經過的時間 (以秒計)。
|
控制項樹狀結構
[控制項樹狀結構] 區段會顯示網頁中建立之 ASP.NET 伺服器控制項的資訊。
值
|
說明
|
|---|
控制項 ID |
控制項的識別。如果您沒有指定控制項的 ID 屬性,ASP.NET 會使用 UniqueID 屬性產生 ID。
|
類型 |
控制項的完整型別。
|
呈現大小位元組 |
呈現控制項 (包括子控制項) 的大小 (以位元組為單位)。這是實際 HTML、XML 或傳送至瀏覽器的其他格式大小。
|
ViewState 大小位元組 |
控制項檢視狀態 (不包括子控制項) 的大小 (以位元組為單位)。如需詳細資訊,請參閱 ASP.NET 狀態管理概觀。
|
ControlState 大小位元組 |
控制項控制狀態 (不包括子控制項) 的大小 (以位元組為單位)。如需詳細資訊,請參閱 ASP.NET 狀態管理概觀。
|
工作階段狀態
[工作階段狀態] 區段會顯示儲存在工作階段狀態中之值 (如果有的話) 的相關資訊。如需詳細資訊,請參閱 ASP.NET 工作階段狀態概觀。
值
|
說明
|
|---|
工作階段金鑰 |
儲存在工作階段狀態的資料索引鍵 (如果有)。
|
類型 |
儲存資料的物件的完整型別。
|
值 |
儲存在工作階段狀態的資料字串表示 (如果有)。
|
應用程式狀態
[應用程式狀態] 區段會顯示儲存在應用程式狀態中值的相關資訊 (如果有的話)。如需詳細資訊,請參閱 ASP.NET 應用程式狀態概觀。
值
|
說明
|
|---|
應用程式索引鍵 |
以應用程式狀態儲存的資料索引鍵 (如果有)。
|
類型 |
儲存資料的物件的完整型別。
|
值 |
儲存在應用程式狀態中之資料的字串表示 (如果有的話)。
|
Cookie 集合
[要求 Cookie] 和 [回應 Cookie] 區段會顯示在每個要求和回應時,在瀏覽器與伺服器之間所傳遞 Cookie 的資訊。區段會同時顯示持續性和工作階段 Cookie。ASP.NET 會自動建立某些 Cookie,例如 Cookie 架構工作階段狀態和表單驗證的 Cookie。如需詳細資訊,請參閱 ASP.NET Cookie 概觀。
值
|
說明
|
|---|
名稱 |
Cookie 的名稱。
|
值 |
Cookie 的值或子機碼 (Subkey) 和值 (如果 Cookie 是多重值)。
|
大小 |
Cookie 的大小 (以位元組為單位)。
|
標頭集合
[標頭集合] 區段會顯示要求和回應訊息標頭名稱/值組的資訊,提供訊息主體或要求資源的資訊。標頭資訊是用來控制處理要求訊息和建立回應訊息的方式。如需 HTTP 標頭的詳細資訊,請參閱全球資訊網協會 (W3C) 網站 的 RFC 2616 (英文)。
表單集合
[表單集合] 區段會顯示名稱/值組,其中會顯示 POST 作業 (回傳) 期間在要求中送出的表單項目值 (控制項值)。
值
|
說明
|
|---|
名稱 |
表單變數的名稱。
|
值 |
表單變數的值。
|
Querystring 集合
伺服器變數
ASP.NET 追蹤和診斷追蹤
追蹤組態屬性
下表說明您可以在 Web.config 檔案的 trace 項目中,用來修改應用程式層級追蹤行為的屬性。
屬性
|
說明
|
|---|
Enabled | true 為啟用應用程式追蹤,否則為 false。預設值為 false。您可以將頁面的 @ Page 指示詞中的 Trace 屬性,設定為 true 或 false,覆寫個別頁面的這項追蹤設定。
|
PageOutput | true 以便同時在網頁和追蹤檢視器 (Trace.axd) 中顯示追蹤,否則為 false。預設值為 false。
注意事項: |
|---|
已啟用追蹤的個別網頁不受這項設定影響。 |
|
RequestLimit |
要儲存在伺服器上的追蹤要求數。預設值為 10。
|
TraceMode |
追蹤資訊的顯示順序。設定 SortByTime 以便依照處理資訊的順序排序。設定 SortByCategory 以便依照使用者定義的分類依字母順序排序。預設值為 SortByTime。
|
LocalOnly | true 指示追蹤檢視器 (trace.axd) 只能在主機 Web 伺服器上使用,否則為 false。預設值為 true。
|
MostRecent | true 會將最近的追蹤資訊顯示成追蹤輸出,否則為 false。如果此值為 false,當超出 requestLimit 值時,就不會儲存新的要求。預設值為 false。
注意事項: |
|---|
只有在 mostRecent 是 true 時,才會只針對最新的資料捨棄超過 requestLimit 屬性定義限制的追蹤資料。 |
|
使用說明和逐步解說主題
回到頁首
概念
參考