Cara membuat VBScript kelas atau JScript objek untuk Debug halaman ASP

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 288965 - Melihat produk di mana artikel ini berlaku.
Perbesar semua | Perkecil semua

Pada Halaman ini

RINGKASAN

Ketika Anda menggunakan server-side Scripting Visual Basic Edition (VBScript) atau JScript, Anda dapat membangun sebuah objek dapat digunakan kembali untuk debugging yang dapat dengan mudah dimasukkan ke dalam halaman Active Server Pages (ASP) selama perkembangan. Mengapa menggunakan pendekatan ini daripada debugger Microsoft Visual InterDev? Jika Visual InterDev debugger sudah diatur, itu adalah pilihan terbaik untuk melangkah melalui kode untuk mengisolasi segala macam run-time kesalahan karena itu memiliki fitur lanjutan. Namun, debugger Visual InterDev dapat menjadi sulit untuk membuat dan menggunakan. Ini juga mengkonsumsi banyak sumber daya pada server Web, yang dapat membuat masalah jika Anda memiliki beberapa situs, pengguna, atau pengembang pada server sementara Anda debug.

Jika Anda hanya perlu ringan debugging alat untuk melacak mengubah nilai-nilai variabel, cookie, Session dan aplikasi nilai-nilai dan koleksi seperti halaman ASP Anda mengeksekusi, Anda mungkin mempertimbangkan untuk menggunakan VBScript kelas atau objek JScript. Objek ini menawarkan keuntungan sebagai berikut:
  • Dapat dikemas dan disertakan pada setiap halaman dengan sederhana server-side termasuk file.
  • Dapat diaktifkan atau dinonaktifkan dengan satu perintah pada halaman.
  • Dapat dibiarkan dalam produksi halaman (dalam keadaan cacat) jika Anda pernah perlu memeriksa variabel.
Pendekatan berbasis objek ini lebih baik daripada percikan ratusan Response.Write pernyataan di seluruh kode Anda dan kemudian akan kembali untuk menghapus semua dari mereka untuk produksi. Juga, pendekatan ini memungkinkan Anda untuk men-debug pada Microsoft Windows 95 atau Microsoft Windows 98 di mana debugger Visual InterDev tidak didukung. Anda juga dapat men-debug dalam situasi di mana biasanya sangat sulit atau tidak mungkin untuk menggunakan debugger Visual InterDev (seperti di firewall atau pada server di mana Anda yang tidak Administrator).

CATATAN: Kelas VBScript hanya tersedia dalam VBScript versi 5.0 atau yang lebih baru.

INFORMASI LEBIH LANJUT

Banyak ASP pengembang menulis kustom debug fungsi itu loop melalui ASP koleksi, seperti Request.ServerVariables Koleksi, dan menampilkan nilai-nilai. Tapi biasanya fungsi seperti keras-kode ke dalam laman, hanya menampilkan beberapa nilai-nilai kritis untuk debugging dan harus dihapus sebelum untuk penyebaran server produksi karena mereka tidak dikemas. Jonathan Goodyear, Presiden ASPSoft.com, baru-baru ini menulis sebuah artikel di Visual Basic Programmer Journal (Februari 2001, Vol. 11 No. 2, hal. 68) di mana ia menyarankan cara untuk merangkum dapat digunakan kembali VBScript debug objek menggunakan Kelas dan Kamus objek. Sampel VBScript di artikel ini sangat mirip dengan pendekatannya. Selain itu, artikel ini memberikan contoh dari objek debug JScript bagi mereka yang menggunakan JScript sisi server. Karena JScript tidak memiliki kelas, sampel menggunakan objek constructor JScript.

Debugging objek untuk VBScript

The Contoh halaman ASP, yang dikodekan dalam VBScript, menggunakan VBScript kelas untuk debugging. Ikuti langkah berikut untuk menggunakan objek debugging VBScript ini:
  1. Pasta (kode kelas VBScriptVBScriptDebug.asp) ke halaman ASP baru yang memiliki tidak Tag lain di dalamnya, dan Simpan halaman.
  2. Sisipkan (halaman ASP) sampelMyVBScript.asp) yang menggunakan objek debug ke halaman ASP baru lain, dan menyimpannya.
  3. Di atas MyVBScript.asp, tempat meliputi perintah untuk VBScriptDebug.asp tepat setelah deklarasi bahasa default.
  4. Di manapun Anda ingin mulai memeriksa nilai-nilai variabel di halaman, menyatakan variabel yang disebut "Debug", set ke contoh baru clsDebug, dan mengaktifkan itu sebagai sampel menunjukkan.
  5. Di manapun Anda ingin untuk memeriksa nilai-nilai variabel di seluruh halaman, menggunakan Mencetak metode Debug objek, di mana Anda melewati label deskriptif Anda sendiri dan variabel itu sendiri.
  6. Pada bagian bawah halaman, di luar kode lainnya, panggilan Debug.end metode (yang mencetak nilai-nilai variabel di bawah konten Anda), dan menetapkan Debug objek untuk apa-apa.
  7. Di mana Anda tidak ingin men-debug tetapi masih ingin meninggalkan Debug objek dan kode di halaman untuk masa depan debugging, hanya mengatur Debug.enabled ke false untuk menonaktifkan debug. Anda tidak harus menghapus kode debugging dari halaman Anda. Untuk alasan kinerja, Anda mungkin ingin menghapus berkas debugging dan kode ketika Anda mengirimkan halaman ke server produksi.

VBScript Debug objek sampel halaman ("MyVBScript.asp")

<%@ Language=VBScript %>

<% Option Explicit %>

<!-- #include file="VBScriptDebug.asp" -->

<%
    'Create a session variable to test the debugger.
    Session("MySessionVar") = "Test variable"
  
    'Declare your debug object and other variables.
    Dim Debug, x
    
    'Instantiate the debug object.
    Set Debug = new clsDebug
    
    'Enable the debug object. In the future,
    'you can set it to false to disable it.  
    'The rest of your debug code can be left in the page.
    Debug.Enabled = true
    
    'The following code shows how to use the Debug.Print method
    'and provide a label to check your variables.
    x = 10
    Debug.Print "x before math", x
    x = x + 50
    Debug.Print "x after math", x

    'Create a cookie to test the debugger.
    Response.Cookies("TestCookie") = "Hello World"  

%>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</HEAD>
<BODY>


<FORM action="" method=POST id=form1 name=form1>
<INPUT type="text" id=text1 name=text1>
<INPUT type="submit" value="Post Info" id=submit1 name=submit1>
</FORM>

<FORM action="" method=Get id=form2 name=form2>
<INPUT type="text" id=text2 name=text2>
<INPUT type="submit" value="Get Info" id=submit2 name=submit2>
</FORM>
</BODY>
</HTML>

<%
    'Call the End method to output all the debug values.
    Debug.End
    Set Debug = nothing
%>
				

VBScript Debug kelas obyek ("VBScriptDebug.asp")

<SCRIPT RUNAT=Server Language=VBScript>

Class clsDebug
    Dim blnEnabled
    Dim dteRequestTime
    Dim dteFinishTime
    Dim objStorage

    Public Property Get Enabled()
        Enabled = blnEnabled
    End Property

    Public Property Let Enabled(bNewValue)
        blnEnabled = bNewValue
    End Property

    Private Sub Class_Initialize()
        dteRequestTime = Now()
        Set objStorage = Server.CreateObject("Scripting.Dictionary")
    End Sub

    Public Sub Print(label, output)
        If Enabled then
            objStorage.Add label, output
        End if
    End Sub

    Public Sub [End]()
        dteFinishTime = Now()
        If Enabled then
            PrintSummaryInfo()
            PrintCollection "VARIABLE STORAGE", objStorage
            PrintCollection "QUERYSTRING COLLECTION", Request.QueryString()
            PrintCollection "FORM COLLECTION", Request.Form()
            PrintCollection "COOKIES COLLECTION", Request.Cookies()
            PrintCollection "SESSION CONTENTS COLLECTION", Session.Contents()
            PrintCollection "SERVER VARIABLES COLLECTION", Request.ServerVariables()
            PrintCollection "APPLICATION CONTENTS COLLECTION", Application.Contents()
            PrintCollection "APPLICATION STATICOBJECTS COLLECTION", Application.StaticObjects()
            PrintCollection "SESSION STATICOBJECTS COLLECTION", Session.StaticObjects()
        End if
    End Sub

    Private Sub PrintSummaryInfo()
        With Response
            .Write("<hr>")
            .Write("<b>SUMMARY INFO</b></br>")
            .Write("Time of Request = " & dteRequestTime) & "<br>"
            .Write("Time Finished = " & dteFinishTime) & "<br>"
            .Write("Elapsed Time = " & DateDiff("s", dteRequestTime, dteFinishTime) & " seconds<br>")
            .Write("Request Type = " & Request.ServerVariables("REQUEST_METHOD") & "<br>")
            .Write("Status Code = " & Response.Status & "<br>")
        End With
    End Sub

    Private Sub PrintCollection(Byval Name, Byval Collection)
        Dim varItem
        Response.Write("<br><b>" & Name & "</b><br>")
        For Each varItem in Collection
            Response.Write(varItem & "=" & Collection(varItem) & "<br>")
        Next
    End Sub

    Private Sub Class_Terminate()
        Set objStorage = Nothing
    End Sub

End Class

</SCRIPT>
				

Debugging objek untuk JScript

Jika Anda menggunakan server-side JScript, berikut ASP contoh Halaman menyediakan fungsionalitas yang sama dengan sampel VBScript sebelumnya. Langkah-langkah untuk menerapkan JScript objek pada halaman untuk debugging yang pada dasarnya sama, jadi mereka tidak diulang di sini. Namun, perhatikan beberapa perbedaan kecil sintaks; tanpa perbedaan-perbedaan ini, Anda JScript debug objek tidak bekerja. Perbedaan ini dicatat dalam contoh di bawah ini.

JScript Debug objek sampel halaman ("MyJScript.asp")

<%@ Language=JScript %>

<!-- #include file="JScriptDebug.asp" -->

<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<%
    Session("MySessionVar") = "Test variable"

    //Note the difference in declaring the object variable.
    var Debug = new objDebug();
    var x
    Debug.Enabled = true
    x = 10

    //Notice that you have to include parentheses with the Print method.
    Debug.Print("x before math", x)
    x = x + 50
    Debug.Print("x after math", x)

    Response.Cookies("TestCookie") = "Hello World"  

%>
</HEAD>
<BODY>
<FORM action="" method=POST id=form1 name=form1>
<INPUT type="text" id=text1 name=text1>
<INPUT type="submit" value="Post Info" id=submit1 name=submit1>
</FORM>

<FORM action="" method=Get id=form2 name=form2>
<INPUT type="text" id=text2 name=text2>
<INPUT type="submit" value="Get Info" id=submit2 name=submit2>
</FORM>

<P></P>

</BODY>
</HTML>

<%
    //Notice that you must use empty parentheses with the End method.
    Debug.End();
%>
				

JScript Debug konstruktor objek ("JScriptDebug.asp")

<SCRIPT LANGUAGE=JScript RUNAT=Server>  

    function objDebug()
    {
	var Now = new Date();
	this.RequestTime = Now;
	this.FinishTime = null;
	this.Print = Print;
	this.Storage = Server.CreateObject("Scripting.Dictionary");
	this.Enabled = false;
	this.End = StopDebug;
    }

    function StopDebug()
    {
	var Now = new Date();
	Debug.FinishTime = Now;
	if(Debug.Enabled == true)
        {
		PrintSummaryInfo()
		PrintDictionary("VARIABLE STORAGE", Debug.Storage)
		PrintCollection("QUERYSTRING COLLECTION", Request.QueryString())
		PrintCollection("FORM COLLECTION", Request.Form())
		PrintCollection("COOKIES COLLECTION", Request.Cookies())
		PrintCollection("SESSION CONTENTS COLLECTION", Session.Contents())
		PrintCollection("SERVER VARIABLES COLLECTION", Request.ServerVariables())
		PrintCollection("APPLICATION CONTENTS COLLECTION", Application.Contents())
		PrintCollection("APPLICATION STATICOBJECTS COLLECTION", Application.StaticObjects())
		PrintCollection("SESSION STATICOBJECTS COLLECTION", Session.StaticObjects())

        }

    }
    
    function Print(label,output)
    {
	if(Debug.Enabled == true)
	{
		Debug.Storage.Add(label,output)
	}
    }

    function PrintSummaryInfo()
    {
	var TotalTime = new Date();
	TotalTime = (Debug.FinishTime - Debug.RequestTime) / 1000
	Response.Write("<hr>")
	Response.Write("<b>SUMMARY INFO</b><br>")
	Response.Write("Time of Request = " + Debug.RequestTime + "<br>")
	Response.Write("Time Finished = " + Debug.FinishTime + "<br>")
	Response.Write("Elapsed Time = " + TotalTime + " seconds<br>")
	Response.Write("Request Type = " + Request.ServerVariables("REQUEST_METHOD") + "<br>")
	Response.Write("Status Code = " + Response.Status + "<br>")
    }

    function PrintDictionary(theName, dict)
    {
	var i
	var KeyArray = (new VBArray(dict.Keys()));
	Response.Write("<br><b>" + theName + "</b><br>")
	for(i=0;i < dict.Count;i++)
	{
		Response.Write(KeyArray.getItem(i) + " = " + dict(KeyArray.getItem(i)) + "<br>")
	}
    }

    function PrintCollection(theName, theColl)
    {
	var x
	Response.Write("<br><b>" + theName + "</b><br>")
	for(x=1;x < (theColl.Count + 1); x++)          
	{
		Response.Write(theColl.Key(x) + " = " + theColl.Item(x) + "<br>")
	}
    }

</SCRIPT>
				

REFERENSI

Untuk informasi tambahan, klik nomor artikel di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft:
192011 Cara mengkonfigurasi Server Web Anda untuk Visual InterDev 6.0 ASP Debugging
244272 INFO: Visual InterDev 6.0 Debugging Resources
Untuk informasi lebih lanjut, lihat situs Web teknologi Scripting Microsoft:
http://msdn2.Microsoft.com/en-us/library/ms950396.aspx

Properti

ID Artikel: 288965 - Kajian Terakhir: 23 September 2011 - Revisi: 2.0
Berlaku bagi:
  • Microsoft Active Server Pages 4.0
Kata kunci: 
kbaspobj kbbug kbdebug kbhowto kbscript kbvisiddebugger kbmt KB288965 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:288965
Sanggahan Konten KB yang Tidak Lagi Diperbarui
Artikel ini berisi tentang produk yang tidak lagi didukung oleh Microsoft. Oleh karena itu, artikel ini disajikan ?sebagaimana adanya? dan tidak akan diperbarui.

Berikan Masukan

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com