共用方式為


寫入追蹤訊息

ASP.NET 包含 Trace 物件 (類似 ResponseRequestContext 物件),允許您撰寫會在您啟用網頁或整個應用程式的追蹤時出現的偵錯陳述式。

ASP.NET 使用 TraceContext 類別來儲存要求的資訊、其控制項階層架構和追蹤資訊。追蹤資訊包括網頁要求的一些存留週期階段,和任何您選擇要包含的自訂陳述式。Web Form 網頁可透過 Page.Trace 屬性使用 TraceContext 類別。擴充 Control 類別以建立自訂 ASP.NET 伺服器控制項時,您可以使用 Control.Context.Trace 語法透過 Control.Context 屬性存取 TraceContext 類別。然而,如果要包含來自檔案 (而不是網頁或控制項) 的追蹤陳述式,例如應用程式的 Global.asax 檔案或擴充 IHttpHandler 介面的類別,您必須使用 HttpContext.Current 屬性以存取 TraceContext 類別。在這種情況下,請使用 HttpContext.Current.Trace 語法。

TraceContext 類別提供兩個方法,WriteWarn,它們允許您將陳述式寫入追蹤記錄檔。每一個方法都是多載的,並允許您指定追蹤分類、文字訊息和選擇性錯誤資訊。這些方法之間唯一差異是,Warn 方法會以紅色顯示其文字。

**注意   **當您在對 WriteWarn 方法的呼叫中指定分類時,您可以使用這個分類來排序追蹤陳述式。如需詳細資訊,請參閱啟用網頁的追蹤功能啟用應用程式層級追蹤

這些方法的每一個都是多載的,並且有三個版本。如果在您呼叫 WarnWrite 時只包含一個字串引數,ASP.NET 會將這視為訊息。如果您包含兩個引數,第一個將視為分類,您可以用來排序訊息在追蹤啟用時顯示的 Trace Information 表格中出現的位置。第三個引數的型別為 Exception,並且包含要求的錯誤資訊 (如果有的話)。

這些追蹤陳述式和其餘追蹤資訊在您啟用網頁或整個應用程式的追蹤時,會顯示於要求瀏覽器。

**安全性提示   **當網頁啟用追蹤時,追蹤資訊會顯示在任何向伺服器要求網頁的瀏覽器上。追蹤會顯示機密的資訊,例如伺服器變數的值,而這也意味著安全性的威脅。請務必在將應用程式移植到實際執行伺服器之前,替網頁停用網頁追蹤。您可以將 Trace 屬性設定為 false 或將它一併移除來做到這點。

下列範例圖片說明在網頁的追蹤啟用時,呈現至 Trace Information 表格的自訂追蹤陳述式。Warn 方法是以紅色文字、Render 的分類和 Text is about to render! 的訊息,來產生第一個訊息。Write 方法是以相同分類,但 Text finished rendering! 的訊息來產生第二個訊息。

網頁中的追蹤陳述式

若要從網頁將自訂追蹤訊息寫入追蹤記錄檔

  1. 在您網頁的程式碼宣告區塊或程式碼後置的類別中,使用 Trace 屬性來呼叫 TraceContext 方法的其中之一。

  2. 為您的追蹤陳述式指定選擇性 category 參數。您可以使用這個分類,在顯示追蹤陳述式時將它們排序。

  3. 為您的追蹤陳述式指定 message 參數。可以是字串或方法。

  4. 指定含有網頁中任何錯誤資訊的選擇性 errorInfo 參數。

    下列 TraceContext.Warn 方法的範例定義 Render 的分類和 Text is about to render 的追蹤訊息。

    Trace.Warn("Render", "Text is about to render.");
    [Visual Basic]
    Trace.Warn("Render", "Text is about to render.")
    

若要將自訂追蹤訊息寫入自訂伺服器控制項的追蹤記錄檔

  1. 在您伺服器控制項的程式碼中,使用 Context 屬性呼叫 TraceContext 方法的其中之一。

  2. 為您的追蹤陳述式指定選擇性 category 參數。您可以使用這個分類,在顯示追蹤陳述式時將它們排序。

  3. 為您的追蹤陳述式指定 message 參數。

  4. 指定含有網頁中任何錯誤資訊的選擇性 errorInfo 參數。

    下列範例使用 TraceContext.Write 方法,將自訂陳述式寫入伺服器控制項的追蹤記錄檔。分類為 My Class,而訊息為 This is a simple trace statement

    Context.Trace.Write("My Class","This is a sample trace statement.");
    [Visual Basic]
    Context.Trace.Write("My Class","This is a sample trace statement.")
    

有時您會想只在追蹤啟用時才將陳述式傳遞給 WriteWarn 方法。TraceContext 物件具有 Boolean 屬性 IsEnabled,允許您有條件呼叫這些方法。

若要只在追蹤啟用時才將追蹤訊息寫入記錄檔

  • 建立 If 陳述式,檢查您程式碼所屬網頁或應用程式的追蹤是否已啟用,然後在 Trace.IsEnabled 屬性傳回 true 時執行條件陳述式。

    下列範例確認網頁的追蹤已啟用,然後使用 Write 方法,將從資料庫選取的書籍編號寫入 Trace Information 表格。

    If (Trace.IsEnabled) {
        For (int i=0; i<ds.Tables["Books"].Rows.Count; i++) {
             Trace.Write("Prod",ds.Tables["Books"].Rows[i][0].ToString());
        }
    }
    [Visual Basic]
    If Trace.IsEnabled Then
        For i=0 To ds.Tables("Books").Rows.Count-1
            Trace.Write("Prod",ds.Tables("Books").Rows(i)(0).ToString())
        Next
    End If
    

請參閱

TraceContext 類別 | ASP.NET 追蹤 | Page 類別 | HttpContext 類別 | 啟用應用程式層級追蹤