Siapapun yang pernah mengembangkan aplikasi Web menggunakan ASP sebelumnya pasti tahu betapa merepotkannya men-debug aplikasi Web. Di ASP, proses debug sangat merepotkan dan biasanya melibatkan pencetakan nilai variabel menggunakan metode Response.Write(). Jadi tanyakan pada diri Anda: Berapa kali Anda lupa menghapus pernyataan debug sebelum menerapkan aplikasi Anda?
Situasi ini telah berubah total dengan munculnya komponen .NET Framework. Di .NET, Anda bisa melacak eksekusi seluruh aplikasi Web menggunakan debugger di Visual Studio .NET, atau dengan menggunakan kelas Trace di namespace System.Web.TraceContext. Artikel ini menunjukkan cara menggunakan kelas Trace untuk membantu pekerjaan debug Anda.
Menggunakan kelas Jejak
ASP.NET menyertakan kelas Trace yang membantu melacak aliran informasi aplikasi. Daripada menggunakan objek Response untuk debugging, Anda sekarang dapat menggunakan kelas Trace untuk mencetak informasi debugging.
Untuk mendemonstrasikan penggunaannya, pertama-tama kita membangun aplikasi Web ASP.NET dan menempatkan kontrol Button dan ListBox pada WebForm1 default (seperti yang ditunjukkan pada Gambar 1). Isi kontrol ListBox dengan tiga item dan atur properti AutoPostBack ke True.
Gambar 1. Mengisi WebForm1 default |
Untuk artikel ini, saya ingin menelusuri alur eksekusi aplikasi saya. Pertama, aktifkan pelacakan. Instruksi halaman harus memuat atribut Trace, dan nilainya disetel ke True (beralih ke mode tampilan sumber HTML), seperti yang ditunjukkan pada Gambar 2.
Gambar 2. Pelacakan aktivasi |
Selanjutnya, saya memasukkan pernyataan Trace di acara pemuatan Formulir sehingga saya tahu jika Postback terjadi. Peristiwa PostBack adalah salah satu fitur yang paling membingungkan di ASP.NET, dan sering kali menyebabkan kegagalan bagi pengembang yang baru mengenal ASP.NET.
Sub Halaman_Muat Pribadi (Pengirim ByVal Sebagai System.Object, _ ByVal e Sebagai Sistem.EventArgs) _ Menangani MyBase.Load 'Tempatkan kode pengguna untuk menginisialisasi halaman di sini Trace.Write("Halaman dimuat") Jika Bukan IsPostBack Lalu Trace.Write("Tidak dalam postback") 'Lakukan beberapa operasi ketika postback terjadi Trace.Write("Dalam postback") 'Lakukan beberapa operasiEnd If Akhiri Sub |
Saya juga ingin tahu apakah postback terjadi ketika item ListBox dipilih:
Sub Pribadi ListBox1_SelectedIndexChanged (Pengirim ByVal Sebagai _ Sistem.Objek, _ ByVal e As System.EventArgs) Menangani _ ListBox1.SelectedIndexChanged Trace.Write("Kotak daftar pos balik") Akhiri Sub |
Ketika aplikasi ASP.NET di atas dijalankan, output berikut akan ditampilkan (ditunjukkan pada Gambar 3):
Gambar 3. Menampilkan informasi pelacakan |
Anda dapat melihat bahwa ketika WebForm1 dimuat untuk pertama kalinya, Anda dapat melihat string "Halaman dimuat" dan "Tidak dalam postback". Jika Anda mengklik tombol di WebForm1, Anda dapat melihat catatan yang ditunjukkan pada Gambar 4. Demikian pula jika ListBox diklik, string "Listbox postback" juga akan ditampilkan.
Gambar 4. Periksa informasi jejak |
Halaman pelacakan berisi bagian berikut (tidak semua informasi ditampilkan pada Gambar 3):
Bagian | Deskripsi |
Detail Permintaan | Menjelaskan informasi terkait permintaan, seperti ID percakapan, pengkodean, dan waktu permintaan. |
Informasi jejak | berisi rincian aplikasi yang sedang berjalan. Informasi pelacakan ditampilkan di bagian ini. |
Pohon kontrol | menampilkan informasi tentang kontrol di halaman dan ukuran bidang tersembunyi Status Tampilan. |
Koleksi Cookie | menampilkan cookie yang disetel oleh halaman dan nilainya. |
Koleksi header | menampilkan informasi header HTTP seperti panjang konten dan agen pengguna. |
Koleksi Formulir | menampilkan nama kontrol pada halaman dan nilainya. |
Variabel Server | menampilkan variabel lingkungan sisi server. |
Perhatikan bahwa informasi pelacakan kami muncul di bawah "Bagian Informasi Pelacakan". Jika Anda ingin mematikan pelacakan, cukup atur atribut Trace di direktif halaman ke False. Tidak perlu menghapus instruksi jejak dari aplikasi Anda, mematikan proses debug kini semudah menyetel nilai boolean.
Mengaktifkan/menonaktifkan penelusuran hanyalah masalah memodifikasi nilai atribut Trace di direktif halaman. Anda juga dapat menonaktifkan pelacakan secara terprogram menggunakan kelas Trace. Anggota kelas Trace adalah sebagai berikut:
Deskripsi | properti |
IsEnabled | menunjukkan apakah akan mengaktifkan pelacakan permintaan saat ini. |
TraceMode | menyetel mode penelusuran: sortByCategory atau sortByTime. |
Metode | Deskripsi |
Peringatkan | menampilkan informasi jejak berwarna merah. |
Tulis | informasi jejak. |
Untuk mematikan pelacakan secara terprogram, gunakan pernyataan berikut dalam peristiwa pemuatan WebForm1:
Dalam kasus kami, informasi pelacakan tidak ditampilkan secara jelas, sehingga terkubur oleh informasi pelacakan lainnya. Metode Warn() dari kelas Trace dapat mencetak informasi jejak dengan warna merah. Jadi daripada menulis kode seperti ini:
Trace.Write("Halaman dimuat") |
Alih-alih:
Trace.Warn("Halaman dimuat") |
Gambar 5 menunjukkan informasi debug yang ditampilkan dengan warna merah untuk metode Warn().
Gambar 5. Menggunakan metode Warn() untuk menampilkan informasi jejak dengan warna merah |
Urutkan informasi pelacakan
Menempatkan beberapa pernyataan penelusuran dalam suatu aplikasi terkadang bisa menjadi berantakan. Pelacakan lebih mudah jika informasi pelacakan Anda dapat dibagi ke dalam kategori yang berbeda. Kelas Trace memungkinkan kita mengklasifikasikan dan mengurutkan informasi jejak berdasarkan kategori.
Contoh berikut menunjukkan cara mengelompokkan informasi pelacakan berdasarkan kategori:
Sub Halaman_Muat Pribadi (Pengirim ByVal Sebagai System.Object, _ ByVal e Sebagai Sistem.EventArgs) _ Menangani MyBase.Load Jejak.TraceMode = TraceMode.SortByCategory 'Tempatkan kode pengguna untuk menginisialisasi halaman di sini Trace.Warn("Page_Load", "Halaman dimuat") Jika Bukan IsPostBack Lalu 'Lakukan beberapa operasi Trace.Warn("Page_Load", "Tidak dalam postback") Kalau tidak Trace.Warn("Page_Load", "Dalam postback") Akhiri Jika Akhiri Sub
Sub Pribadi ListBox1_SelectedIndexChanged (pengirim ByVal _ Sebagai System.Object, ByVal dan Sebagai _ System.EventArgs) Menangani _ ListBox1.SelectedIndexChanged Trace.Warn("ListBox", "Listbox postback") Akhiri Sub |
Saat menjalankan contoh ini, informasi debug berikut akan ditampilkan, dikelompokkan berdasarkan kategori (ditunjukkan pada Gambar 6):
Gambar 6. Urutkan berdasarkan kategori |
Mari kita analisa kode di atas:
Jejak.TraceMode = TraceMode.SortByCategory |
Properti TraceMode menyetel mode yang didukung oleh penelusuran:
· SortByCategory: Mengurutkan informasi pelacakan menurut jenisnya.
· SortByTime: Menampilkan informasi jejak berdasarkan urutan eksekusi.
Karena kami memilih mode pengurutan berdasarkan kategori, Gambar 7 menunjukkan informasi yang diurutkan berdasarkan kategori.
Trace.Warn("Page_Load", "Halaman dimuat") |
Atribut Peringatkan menampilkan pesan berwarna merah. Dalam contoh ini, kami meneruskan dua parameter. Kategori masukan pertama (Category), parameter kedua adalah mendapatkan pesan (Message).
Selain menyetel mode penelusuran menggunakan kelas Trace, Anda juga dapat menentukan mode penelusuran menggunakan arahan halaman:
<%@ Page Language="vb" Trace="true" TraceMode="SortByCategory" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="WebApplication1.WebForm1" %> |
Jejak Aplikasi
Bagian terakhir membahas pelacakan halaman, yang melacak aliran informasi eksekusi dalam suatu halaman. ASP.NET juga mendukung penelusuran tingkat aplikasi. Penelusuran tingkat aplikasi diatur dalam file web.config, di bawah bagian penelusuran:
Untuk mengaktifkan pelacakan tingkat aplikasi, tetapkan nilai berikut:
Nilai | Properti | Deskripsi |
Diaktifkan | Benar | Mengaktifkan atau menonaktifkan penelusuran tingkat aplikasi. |
requestLimit | 10 | menetapkan jumlah maksimum permintaan untuk dilacak. |
pageOutput | False | menampilkan informasi pelacakan di akhir halaman. |
traceMode | sortByTime | metode penyortiran informasi jejak. |
localOnly | True | menetapkan kemampuan untuk melihat jejak browser di komputer non-lokal. |
Saat aplikasi dimuat, informasi pelacakan tidak ditampilkan di halaman. Untuk melihat informasi jejak, kita perlu menggunakan penampil jejak (trace.axd):
Gambar 7. Penelusuran tingkat aplikasi |
Gambar 7 menunjukkan informasi jejak untuk enam permintaan terakhir aplikasi. Untuk melihat detail setiap permintaan, klik link "Lihat Detail" untuk setiap baris.
Perhatikan bahwa jika jejak disetel ke true di file web.config dan disetel ke false di direktif halaman, penelusuran akan dinonaktifkan.
Meringkaskan
ASP.NET membuat debugging aplikasi web menjadi lebih mudah. Sekarang setelah Anda mengetahui cara menggunakan pelacakan, cobalah dan lihat seberapa besar hal ini meningkatkan produktivitas Anda!