Como criar uma classe de VBScript ou JScript objeto depurar páginas ASP

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 288965
Aviso de Isenção de Responsabilidade sobre Conteúdo do KB Aposentado
Este artigo trata de produtos para os quais a Microsoft não mais oferece suporte. Por esta razão, este artigo é oferecido "como está" e não será mais atualizado.
Sumário
Ao usar o Visual Basic Scripting Edition (VBScript) ou JScript no lado do servidor, você pode criar um objeto reutilizável para depuração que pode ser facilmente incluído nas páginas Active Server Pages (ASP) durante o desenvolvimento. Por que usar essa abordagem em vez do depurador do Microsoft Visual InterDev? Se o depurador do Visual InterDev já está configurado, é a melhor opção para etapas através do código para isolar todos os tipos de erros em tempo de execução porque ele tem recursos avançados. No entanto, o depurador do Visual InterDev pode ser difícil de configurar e usar. Ele também consome muitos recursos do servidor Web, que pode criar um problema se você tiver vários sites, usuários ou os desenvolvedores no servidor enquanto você está depurando.

Se você simplesmente precisar de uma simples ferramenta de depuração para controlar alterando valores de variáveis, cookies, valores de sessão e aplicativo e coleções como executar as páginas ASP, você pode considerar o uso uma classe de VBScript ou JScript objeto. Esses objetos oferecem as seguintes vantagens:
  • Pode ser encapsulado e incluída em cada página com um simples arquivo inclusão do lado do servidor.
  • Pode ser habilitada ou desabilitada com um único comando na página.
  • Pode ser deixado em páginas de produção (em um estado desabilitado) caso nunca precise verificar as variáveis.
Essa abordagem baseada em objeto é melhor salpicadas centenas de instruções Response.Write em todo o código e, em seguida, voltar para remover todos para produção. Além disso, essa abordagem permite que você depurar no Microsoft Windows 95 ou Microsoft Windows 98 onde o depurador do Visual InterDev não oferece suporte. Você também pode depurar em situações onde normalmente, é difícil ou impossível usar o depurador do Visual InterDev (como através de firewalls ou em servidores onde você não for um administrador).

Observação : as classes de VBScript só estão disponíveis no VBScript versão 5.0 ou posterior.
Mais Informações
Muitos desenvolvedores ASP escrevem funções de depuração personalizada que percorrer coleções de ASP, como a coleção Request.ServerVariables e exibem os valores. Mas normalmente tais funções são embutido na página, apenas exibir alguns dos valores críticos para depuração e devem ser removidas antes para implantação de servidor de produção porque eles não são encapsulados. Jonathan Goodyear, presidente de ASPSoft.com recentemente escreveu um artigo no Diário do programador do Visual Basic (fevereiro de 2001, 11 de volume, nº 2, MI 68) no qual ele sugerida uma forma de encapsular um objeto de depuração do VBScript reutilizável usando uma classe e um objeto Dictionary . Os exemplos de VBScript neste artigo são semelhantes a sua abordagem. Além disso, este artigo fornece um exemplo de um objeto de depuração do JScript para aqueles que usam JScript no lado do servidor. Porque JScript não tem classes, o exemplo usa um objeto de construtor de JScript.

Objeto de depuração para o VBScript

A sample ASP page, que é codificado no VBScript, usa a VBScript class para depuração. Siga estas etapas para usar esse objeto depuração VBScript:
  1. Cole o código VBScript a classe (VBScriptDebug.asp) em uma nova página ASP que não apresenta outras marcas nela e salve a página.
  2. Cole o exemplo de página ASP (MyVBScript.asp) que usa o objeto de depuração em outra página ASP nova e salvá-lo.
  3. Na parte superior da MyVBScript.asp, coloque um comando de inclusão para VBScriptDebug.asp logo após a declaração de idioma padrão.
  4. Onde você deseja iniciar a verificação valores de variáveis na página, declare uma variável chamada "Depuração", defini-la como uma nova instância do clsDebug e ativá-lo como demonstra o exemplo.
  5. Onde você deseja verificar valores de variáveis em toda a página, use o método Print do objeto Debug , no qual você passar seu próprio rótulo descritivo e a variável propriamente dito.
  6. Na parte inferior da página, fora de qualquer outro código, chamar o método Debug.End (que imprime todos os valores variáveis abaixo seu conteúdo) e defina o objeto Debug para nada.
  7. Onde você não deseja depurar, mas ainda quiser deixar o objeto Debug e seu código na página para depuração futuras, defina apenas Debug.Enabled como false para desativar a depuração. Não é necessário remover o código de depuração de sua página. Por motivos de desempenho, convém remover os arquivos de inclusão de depuração e código quando você postar a página em um servidor de produção.

Página de exemplo VBScript Debug objeto ("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%>				

Objeto de classe Debug VBScript ("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 SubEnd Class</SCRIPT>				

Objeto de depuração para JScript

Se você usar JScript no lado do servidor, a seguinte ASP sample page fornecerá a mesma funcionalidade como exemplo de VBScript anterior. As etapas para implementar o JScript object em uma página para depuração são essencialmente os mesmos, por isso, eles não são repetidos aqui. No entanto, observe algumas diferenças pequenas sintaxe; sem essas diferenças, o JScript objeto de depuração não funciona. Essas diferenças são observadas no exemplo abaixo.

Página de exemplo objeto Debug JScript ("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();%>				

Objeto de construtor de depuração do JScript ("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>				
Referências
Para obter informações adicionais, clique nos números abaixo para ler os artigos na Base de dados de Conhecimento da Microsoft:
192011Como configurar seu servidor Web para depuração de ASP do Visual InterDev 6.0
244272INFO: Recursos de depuração Visual InterDev 6.0
Para obter mais informações, consulte o site Microsoft Script Technologies na Web:

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 288965 - Última Revisão: 08/08/2007 06:49:57 - Revisão: 2.2

Microsoft Active Server Pages 4.0, Microsoft JScript 5.0, Microsoft JScript 5.5, Visual Basic, Scripting Edition 5.0, Microsoft Visual Basic, Scripting Edition 5.5

  • kbmt kbaspobj kbbug kbdebug kbhowto kbscript kbvisiddebugger KB288965 KbMtpt
Comentários