People who used to use ASP to develop Web applications must know how troublesome it is to debug Web applications. In ASP, debugging is painful and typically includes values that use the Response.Write () method to output variables. So ask yourself: how many times have you forgotten to delete a debug statement before the application is in the program?
With. NET Framework components have changed radically. In. NET, you can use visual Studio. NET to track the execution of the entire WEB application, or to use the Trace class in the System.Web.TraceContext namespace. This article demonstrates how to use the Trace class to assist with your debugging efforts.
Using the Trace class
Asp. NET contains a trace class that helps track the flow of information in your application. Instead of debugging with a response object, you can now use the Trace class to print out debugging information.
To demonstrate its use, we first build a asp.net Web application and place a button and a ListBox control on the default WebForm1 (as shown in Figure 1). Populates the ListBox control with three items and sets its AutoPostBack property to True.
Figure 1. Populating the default WebForm1
|
For this article, I want to track the execution flow of the application. First, the trace is activated, and the page directive requires that the trace attribute be set to true (switch to view HTML source mode), as shown in Figure 2.
Figure 2. Activate tracing
|
Next, I insert the trace statement in the form's Load event so that I know if postback has occurred. The postback event is one of the most confusing features in ASP.net, and it often leads to the failure of the first ASP.net developers.
Private Sub Page_Load (ByVal sender as System.Object, _ ByVal e As System.EventArgs) _ Handles MyBase.Load ' Place the user code for the initialization page here Trace.Write ("Page Loaded") If not IsPostBack Then Trace.Write ("Not in a postback") ' Perform some action when the postback occurs Else Trace.Write ("In a postback") ' Perform some action End If End Sub |
I also want to know whether the postback occurred when the listbox was selected:
Private Sub listbox1_selectedindexchanged (ByVal sender as _ System.Object, _ ByVal e As System.EventArgs) Handles _ Listbox1.selectedindexchanged Trace.Write ("Listbox postback") End Sub |
When the above ASP.net application executes, the following output results are displayed (Figure 3):
Figure 3. Show Trace Information
|
You can see that the string "Page loaded" and "not in a postback" are visible when you first load the WebForm1. If you click on the WebForm1 button, you can see the record shown in Figure 4. Similarly, if you click on a ListBox, a "ListBox postback" string is also displayed.
Figure 4. Check trace information
|
The trace page contains the following sections (no information is shown in Figure 3):
Paragraph |
Describe |
Request Details |
Describes the information associated with the request, such as the dialog ID, encoding, and time of the request. |
Tracking information |
Contains detailed information about the currently running application. The trace information is displayed in this section. |
Control tree |
Displays information about the controls on a page and the size of the ViewState hidden fields. |
Cookie Collection |
A cookie that displays the page and its value settings. |
Header Collection |
Displays HTTP header information, such as the content length and user agent. |
Form Collection |
Displays the names of controls on a page and their values. |
Server variables |
Displays the server-side environment variables. |
Note that our tracking information is displayed below the trace Information section. If you want to turn off tracing, simply set the properties of trace in the page directive to false. There is no need to remove trace instructions from the application, and now turning off debugging is simply setting a Boolean value.
Turning on/off tracing simply modifies the value of the trace attribute in the page directive. You can also use the Trace class program to turn off tracing. The members of the Trace class are as follows:
Property |
Describe |
IsEnabled |
Indicates whether to activate tracing for the current request. |
TraceMode |
Set trace mode: SortByCategory or SortByTime. |
Method |
Describe |
Warn |
Displays the trace information as red. |
Write |
Write trace information. |
To programmatically turn off tracing, you can use the following statement in the WEBFORM1 Load event:
In our case, the tracking information is not shown in a very significant purpose, so it is buried by other tracking information. The Warn () method of the Trace class can print trace information to red. So it's not writing code like this:
Trace.Write ("Page Loaded") |
But:
Trace.Warn ("Page Loaded") |
Figure 5 shows the debugging information shown in red by the Warn () method.
Figure 5. Use the Warn () method to display trace information in red
|
sort the trace information
Putting multiple trace statements in one application can sometimes seem cluttered. If your tracking information can be grouped into different categories, then tracking is easier. The Trace class allows us to categorize and sort trace information based on species.
The following example shows how to group trace information by Category:
Private Sub Page_Load (ByVal sender as System.Object, _ ByVal e As System.EventArgs) _ Handles MyBase.Load Trace.tracemode = Tracemode.sortbycategory ' Place the user code for the initialization page here Trace.Warn ("Page_Load", "Page Loaded") If not IsPostBack Then ' Perform some action Trace.Warn ("Page_Load", "not in a postback") Else Trace.Warn ("Page_Load", "in a postback") End If End Sub
Private Sub listbox1_selectedindexchanged (ByVal sender _ As System.Object, ByVal E As _ System.EventArgs) Handles _ Listbox1.selectedindexchanged Trace.Warn ("ListBox", "ListBox postback") End Sub |
When you perform this example, the following debugging information is displayed, grouped by category (Figure 6):
Figure 6. Sort by Category
|
Let's analyze the above code:
Trace.tracemode = Tracemode.sortbycategory |
The TraceMode property sets the pattern for tracking support:
· SortByCategory: Sorts trace information according to type.
· SortByTime: The tracking information is displayed according to the order of execution.
Because we chose to sort by category, Figure 7 shows that the information is sorted by category.
Trace.Warn ("Page_Load", "Page Loaded") |
The Warn property displays the message as red, noting that this is an overloaded method. In the example, we passed two parameters to it. The first input category (Category), and the second parameter is for obtaining a message.
In addition to using the Trace class to set trace mode, you can also use page directives to specify the tracking mode:
<%@ Page language= "vb" Trace= "true" tracemode= "SortByCategory" "autoeventwireup=" false "codebehind=" WebForm1.aspx.vb "inherits=" Webapplication1.webform1 "%> |
Application Tracking
The last section discusses page tracking, which tracks the flow of information within a page. Asp. NET supports application-level tracing, and application-level tracing is set in the Web.config file, under the trace section:
To activate application-level tracing, set the following value:
Property |
Value |
Describe |
Enabled |
True |
Activates or disables application-level tracing. |
Requestlimit |
10 |
Sets the maximum number of requests that are tracked. |
Pageoutput |
False |
Displays trace information at the end of the page. |
TraceMode |
SortByTime |
How to sort the tracking information. |
Localonly |
True |
Sets the ability to view tracking browsers on a non-local computer. |
After the application is loaded, the tracking information is not displayed on the page. To view the tracking information, we need to use the Trace viewer (Trace.axd):
Figure 7. Application-Level tracing
|
Figure 7 shows the tracking information for the last six requests of the application. To view the details of each request, click the "View Details" link for each row.
Note that if trace is set to true in the Web.config file and it is set to false in the page directive, tracing will be disabled.
Summary
Asp. NET makes it much easier to debug Web applications. Now that you know how to use tracing, try it and see how much it has improved your efficiency!