程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> ASP.NET跟蹤模式詳解

ASP.NET跟蹤模式詳解

編輯:關於ASP.NET

【摘要】ASP.NET的跟蹤功能比ASP有了很大的提高,通過跟蹤信息有利於判斷WEB應用程序中錯誤的根源。本文通過實例詳細解釋了ASP.NET的跟蹤模式。

【關鍵字】ASP.NET;跟蹤信息;Trace

1、引言

傳統ASP最常用的調試方法是使用Response.Write來設置斷點,在WEB頁面上顯示出某些變量當時的值。但是,這種方法存在不少問題。

(1)在程序中布滿Response.Write語句,這些語句可能反而影響調試,也會影響頁面的布局。

(2)調試結束後,還要痛苦地將這些語句刪掉。而在刪除多余的Response.Write時還要處處小心,防止錯刪必要的Response.Write語句。如果程序有上百行,工作量之大可想而知。

ASP.NET推出了允許直接在代碼中編寫調試語句的新功能,從而在將應用程序部署到生產服務器時,無需將它們從應用程序中移除。該功能叫做跟蹤,允許在頁中編寫變量或結構、斷言是否符合某個條件,或只是通過頁或應用程序的執行路徑進行跟蹤。為了收集並顯示這些消息和其他跟蹤信息,必須啟用頁或應用程序的跟蹤。當啟用跟蹤時,將發生兩件事情:

(1)ASP.NET將一系列診斷信息表緊接著追加在頁輸出之後。還將該信息發送到跟蹤查看器應用程序(只有當已啟用了應用程序的跟蹤時)。

(2)ASP.NET在追加性能數據的Trace Information表中顯示自定義診斷消息。指定的診斷信息和跟蹤消息追加在發送到請求浏覽器的頁輸出中。或者,可以在單獨的跟蹤查看器(trace.axd)中查看該信息,該查看器顯示給定應用程序中每頁的跟蹤信息。當ASP.NET處理頁請求時,該信息可以幫助查清錯誤或不希望得到的結果。

只有在啟用了跟蹤後才處理並顯示跟蹤語句。可以控制是否將跟蹤顯示到頁上、顯示到跟蹤查看器或既顯示到頁上又顯示到跟蹤查看器。

2、ASP.NET的跟蹤模式的配置

為了能使用跟蹤功能,就要在頁面或整個應用程序的范圍內啟用它。

2.1 頁面級的配置

要在頁面級啟用跟蹤功能,就要在@Page指令中設置Trace屬性。如下所示:

*******************************************************************************

<%@ Page Language="vb" Trace="true" Codebehind="WebForm1.aspx.vb" Inherits="WebApplication1.WebForm1"%>

*******************************************************************************

圖1:跟蹤信息

如果Trace的屬性值為true,那麼當頁面被顯示時將在頁面底部顯示跟蹤信息。而使用TraceMode屬性能調整這些信息的顯示順序。TraceMode可選的值有:按照時間順序排列(SortByTime)和按類別(SortCategory),其中,默認值為按照時間順序排列。

2.2 應用程序級的配置

應用程序級的跟蹤功能有多種選擇,可以通過在config.web文件中的<system.web>下增加一個XML元素<trace>來設置。

表1:跟蹤選項

屬性 說明 Enabled 如果應用程序中能使用跟蹤功能為true,否則為false PageOutput 如果跟蹤信息顯示在應用程序的頁面上和跟蹤窗口中則為true,否則為false。注意:該屬性將不影響已啟動的跟蹤功能頁 RequestLimit 說明服務器所能存放的跟蹤請求的最大個數。默認為10個 TraceMode 指名按某種順序顯示跟蹤信息。按SortByTime(時間順序)或按用戶定義類型的SortByCategory(字母順序)。默認為按時間順序。 LocalOnly 如果為true,跟蹤窗口(trace.axd)只能顯示在Web服務器的主機上,否則為false。默認為true。

*******************************************************************************
<configuration>
<system.web>
<trace Enabled="true" PageOutPut="false" requestLimit="20" traceMode="SortByTime" localOnly="true"/>

</system.web>
</configuration>
*******************************************************************************

雖然例子中使用了所有的屬性,但是並非每個屬性都必須設置。而且頁面級的配置將覆蓋應用程序級的配置。比如,在應用程序級禁用了跟蹤功能,但在頁面級又啟用這個功能,那麼跟蹤信息仍會顯示在頁面上。

RequstLimit屬性設置了將被記錄的在跟蹤日志中的請求的個數,這可以避免日志量過大。如果localOnly屬性設為true,那麼只在服務器上看到跟蹤信息。這使得只有服務器端可以跟蹤應用程序,而其他用戶卻看不到跟蹤信息。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved