以前使用ASP開發過Web應用程序的人員肯定知道調試Web應用程序是多麼麻煩
在ASP中
調試是痛苦的
通常包括了使用Response
Write()方法輸出變量的值
那麼請問一下自己
你有多少次忘記了在布署應用程序之前刪除了調試語句?
隨著
NET框架組件的出現這種情況發生了徹底的改變
在
NET中
你可以使用Visual Studio
NET中的調試程序跟蹤整個Web應用程序的執行
或者使用System
Web
TraceContext名字空間中的Trace類
本文演示如何使用Trace類輔助你的調試工作
使用Trace類 ASP
NET中包含了一個幫助跟蹤應用程序信息流的Trace類
作為使用Response對象進行調試的代替
你現在可以使用Trace類打印出調試信息了
為了演示它的使用
我們首先建立一個ASP
NET Web應用程序
並在默認的WebForm
上放置一個Button和一個ListBox控件(如圖
所示)
用三個項填充ListBox控件並把它的AutoPostBack屬性設置為True

對於本文
我希望跟蹤應用程序的執行流
首先
激活跟蹤
頁面指令要求含有Trace屬性
它的值設置為True(切換到查看HTML源模式)
如圖
所示
圖激活跟蹤 下一步
我在Form的load事件中插入Trace語句
這樣我就知道是否發生了Postback
PostBack事件是ASP
NET中的最容易混亂的一個特性
它經常導致初用ASP
NET的開發者的失敗
Private Sub Page_Load(ByVal sender As System
Object
_
ByVal e As System
EventArgs) _
Handles MyBase
Load
此處放置初始化頁面的用戶代碼
Trace
Write(
Page loaded
)
If Not IsPostBack Then
Trace
Write(
Not in a postback
)
postback發生的時候執行一些操作
Else
Trace
Write(
In a postback
)
執行一些操作
End If
End Sub
我同樣想知道當ListBox數據項被選擇的時候是否發生了postback
Private Sub ListBox
_SelectedIndexChanged(ByVal sender As _
System
Object
_
ByVal e As System
EventArgs) Handles _
ListBox
SelectedIndexChanged
Trace
Write(
Listbox postback
)
End Sub
當上面的ASP
NET應用程序執行時
將顯示下面的輸出結果(圖
所示)
圖顯示跟蹤信息 你可以發現
當第一次載入WebForm
的時候
你可以看到字符串
Page loaded
和
Not in a postback
如果你點擊WebForm
上的按鈕
你可以看到圖
所示的記錄
與此類似
如果點擊了ListBox
也會顯示
Listbox postback
字符串
圖檢查跟蹤信息 跟蹤頁面包含下面的部分(圖
中沒有顯示所有的信息)

注意
我們的跟蹤信息顯示在
跟蹤信息段
的下面
如果要關閉跟蹤
只需要簡單地把頁面指令中Trace的屬性設置為False
沒有必要刪除應用程序中的跟蹤指令
現在關閉調試僅僅是設置一個布爾值這麼簡單了
打開/關閉跟蹤只是簡單地修改頁面指令中的Trace屬性的值
你也可以使用Trace類編程關閉跟蹤
Trace類的成員如下

要編程關閉跟蹤
可以在WebForm
的load事件中使用下面的語句
Trace
IsEnabled = false
在我們的例子中
跟蹤信息沒有很顯目的顯示
因此它被其它的跟蹤信息掩埋了
Trace類的Warn()方法可以把跟蹤信息打印為紅色
因此不是這樣編寫代碼
Trace
Write(
Page loaded
)
而是
Trace
Warn(
Page loaded
)
圖
顯示了Warn()方法用紅色顯示的調試信息
圖使用Warn()方法用紅色顯示跟蹤信息 對跟蹤信息排序 把多個跟蹤語句放在一個應用程序中有時會顯得雜亂
如果你的跟蹤信息可以被分為不同的類別
那麼跟蹤就更容易了
Trace類允許我們基於種類對跟蹤信息進行分類和排序
下面的例子演示了如何對跟蹤信息按類別進行分組
Private Sub Page_Load(ByVal sender As System
Object
_
ByVal e As System
EventArgs) _
Handles MyBase
Load
Trace
TraceMode = TraceMode
SortByCategory
此處放置初始化頁面的用戶代碼
Trace
Warn(
Page_Load
Page loaded
)
If Not IsPostBack Then
執行一些操作
Trace
Warn(
Page_Load
Not in a postback
)
Else
Trace
Warn(
Page_Load
In a postback
)
End If
End Sub
Private Sub ListBox
_SelectedIndexChanged(ByVal sender _
As System
Object
ByVal e As _
System
EventArgs) Handles _
ListBox
SelectedIndexChanged
Trace
Warn(
ListBox
Listbox postback
)
End Sub
執行這個例子的時候
將顯示下面的調試信息
它根據類別分組了(圖
所示)
圖按類別排序 讓我們分析上面的代碼
Trace
TraceMode = TraceMode
SortByCategory
TraceMode屬性設置了跟蹤支持的模式
SortByCategory
根據類型對跟蹤信息排序
SortByTime
根據執行次序對跟蹤信息進行顯示
因為我們選擇了根據類別排序模式
因此圖
顯示了信息按類別排序了
Trace
Warn(
Page_Load
Page loaded
)
Warn屬性把消息顯示為紅色
注意這是個重載的方法
在例子中
我們給它傳遞了兩個參數
第一個輸入類別(Category)
第二個參數是為取得消息(Message)的
除了使用Trace類設置跟蹤模式之外
你還可以使用頁面指令指定跟蹤模式
<%@ Page Language=
vb
Trace=
true
TraceMode=
SortByCategory
AutoEventWireup=
false
Codebehind=
WebForm
aspx
vb
Inherits=
WebApplication
WebForm
%>
應用程序跟蹤 最後一部分討論了頁面追蹤
它追蹤頁面內的執行信息流
ASP
NET同時支持應用程序級的追蹤
應用程序級的追蹤在nfig文件中設置
在trace段下面
<trace enabled=
false
requestLimit=
pageOutput=
false
traceMode=
SortByTime
localOnly=
true
/>
為了激活應用程序級追蹤
設置下面的值

當應用程序被載入後
追蹤信息沒有顯示在頁面上
為了查看追蹤信息
我們需要使用追蹤查看器(trace
axd)
圖應用程序級的追蹤 圖
顯示了應用程序的最後的六個請求的追蹤信息
如果要查看每個請求的細節信息
點擊每一行的
View Details
鏈接
注意
如果在nfig文件中trace被設置為true
並且在頁面指令中它被設置為false
追蹤將被禁止
總結 ASP
NET使調試Web應用程序容易多了
現在你已經知道了如何使用追蹤
試用一下
看看它把你的效率提高了多少!
From:http://tw.wingwit.com/Article/program/net/201311/11590.html