Cualquiera que haya desarrollado una aplicación web utilizando ASP antes debe saber lo problemático que es depurar una aplicación web. En ASP, la depuración es complicada y normalmente implica imprimir el valor de una variable utilizando el método Response.Write(). Entonces pregúntese: ¿Cuántas veces se ha olvidado de eliminar las declaraciones de depuración antes de implementar su aplicación?
Esta situación ha cambiado por completo con la llegada de los componentes de .NET Framework. En .NET, puede rastrear la ejecución de una aplicación web completa usando el depurador en Visual Studio .NET o usando la clase Trace en el espacio de nombres System.Web.TraceContext. Este artículo demuestra cómo utilizar la clase Trace para ayudarle en su trabajo de depuración.
Usando la clase de seguimiento
ASP.NET incluye una clase Trace que ayuda a realizar un seguimiento del flujo de información de la aplicación. En lugar de utilizar el objeto Respuesta para depurar, ahora puede utilizar la clase Trace para imprimir información de depuración.
Para demostrar su uso, primero creamos una aplicación web ASP.NET y colocamos un botón y un control ListBox en el WebForm1 predeterminado (como se muestra en la Figura 1). Llene el control ListBox con tres elementos y establezca su propiedad AutoPostBack en True.
Figura 1. Completar el WebForm1 predeterminado |
Para este artículo, quiero rastrear el flujo de ejecución de mi aplicación. Primero, active el seguimiento. Se requiere que la instrucción de la página contenga el atributo Trace y su valor esté establecido en Verdadero (cambie para ver el modo fuente HTML), como se muestra en la Figura 2.
Figura 2. Seguimiento de activación |
A continuación, inserto una declaración de seguimiento en el evento de carga del formulario para saber si se produjo una devolución de datos. El evento PostBack es una de las características más confusas de ASP.NET y, a menudo, provoca fallos en los desarrolladores nuevos en ASP.NET.
Subpágina privada_carga (remitente ByVal como System.Object, _ ByVal y As System.EventArgs) _ Maneja MyBase.Load 'Coloque aquí el código de usuario para inicializar la página Trace.Write("Página cargada") Si no es, publicar en aquel entonces Trace.Write("No en una devolución de datos") 'Realizar algunas operaciones cuando se produce la devolución de datos. Trace.Write("En una devolución de datos") 'Realizar algunas operacionesEnd If Subtítulo final |
También me gustaría saber si se produce una devolución de datos cuando se selecciona un elemento de ListBox:
SubListBox1 privado_SelectedIndexChanged(ByVal remitente como _ Sistema.Objeto, _ ByVal y As System.EventArgs) maneja _ ListBox1.SelectedIndexChanged Trace.Write ("devolución de datos del cuadro de lista") Subtítulo final |
Cuando se ejecute la aplicación ASP.NET anterior, se mostrará el siguiente resultado (como se muestra en la Figura 3):
Figura 3. Visualización de información de seguimiento |
Puede observar que cuando se carga WebForm1 por primera vez, puede ver las cadenas "Página cargada" y "No en una devolución de datos". Si hace clic en el botón en WebForm1, podrá ver el registro que se muestra en la Figura 4. De manera similar, si se hace clic en ListBox, también se mostrará la cadena "Devolución de datos de Listbox".
Figura 4. Verificar información de seguimiento |
La página de seguimiento contiene las siguientes secciones (no toda la información se muestra en la Figura 3):
Sección | Descripción |
Detalles de la solicitud | Describe información relacionada con la solicitud, como el ID de la conversación, la codificación y la hora de la solicitud. |
La información de seguimiento | contiene detalles de las aplicaciones que se están ejecutando actualmente. La información de seguimiento se muestra en esta sección. |
El árbol de control | muestra información sobre los controles en una página y el tamaño de los campos ocultos de Viewstate. |
La colección de cookies | muestra las cookies establecidas por la página y sus valores. |
La colección de encabezados | muestra información del encabezado HTTP, como la longitud del contenido y el agente de usuario. |
La colección Formularios | muestra los nombres de los controles en una página y sus valores. |
Variables del servidor | muestra variables de entorno del lado del servidor. |
Tenga en cuenta que nuestra información de seguimiento aparece debajo de la "Sección de información de seguimiento". Si desea desactivar el seguimiento, simplemente establezca el atributo Seguimiento en la directiva de página en Falso. No es necesario eliminar las instrucciones de seguimiento de su aplicación; desactivar la depuración ahora es tan simple como establecer un valor booleano.
Activar/desactivar el seguimiento es simplemente una cuestión de modificar el valor del atributo Trace en la directiva de la página. También puede desactivar el seguimiento mediante programación utilizando la clase Trace. Los miembros de la clase Trace son los siguientes:
Descripción | de la propiedad |
IsEnabled | indica si se activa el seguimiento de la solicitud actual. |
TraceMode | establece el modo de seguimiento: sortByCategory o sortByTime. |
Método | Descripción |
Warn | muestra información de seguimiento en rojo. |
Escribe | información de seguimiento. |
Para desactivar el seguimiento mediante programación, utilice la siguiente declaración en el evento de carga de WebForm1:
En nuestro caso, la información de seguimiento no se muestra de forma destacada, por lo que queda oculta bajo otra información de seguimiento. El método Warn() de la clase Trace puede imprimir información de seguimiento en rojo. Entonces, en lugar de escribir el código así:
Trace.Write("Página cargada") |
En cambio:
Trace.Warn("Página cargada") |
La Figura 5 muestra la información de depuración mostrada en rojo para el método Warn().
Figura 5. Uso del método Warn() para mostrar información de seguimiento en rojo |
Ordenar información de seguimiento
Poner varias declaraciones de seguimiento en una aplicación a veces puede resultar confuso. El seguimiento es más fácil si su información de seguimiento se puede dividir en diferentes categorías. La clase Trace nos permite clasificar y ordenar información de seguimiento según la categoría.
El siguiente ejemplo demuestra cómo agrupar la información de seguimiento por categoría:
Subpágina privada_carga (remitente ByVal como System.Object, _ ByVal y As System.EventArgs) _ Maneja MyBase.Load Trace.TraceMode = TraceMode.SortByCategory 'Coloque aquí el código de usuario para inicializar la página Trace.Warn("Page_Load", "Página cargada") Si no es, publicar en aquel entonces 'Realiza algunas operaciones Trace.Warn("Page_Load", "No en una devolución de datos") Demás Trace.Warn("Page_Load", "En una devolución de datos") Terminar si Subtítulo final
Sub ListBox privado1_SelectedIndexChanged (remitente ByVal _ Como System.Object, ByVal y As _ System.EventArgs) Identificadores _ ListBox1.SelectedIndexChanged Trace.Warn ("ListBox", "devolución de datos del cuadro de lista") Subtítulo final |
Al ejecutar este ejemplo, se mostrará la siguiente información de depuración, agrupada por categoría (que se muestra en la Figura 6):
Figura 6. Ordenar por categoría |
Analicemos el código anterior:
Trace.TraceMode = TraceMode.SortByCategory |
La propiedad TraceMode establece los modos admitidos por el seguimiento:
· SortByCategory: ordena la información de seguimiento según el tipo.
· SortByTime: muestra información de seguimiento según el orden de ejecución.
Debido a que seleccionamos el modo de clasificación por categoría, la Figura 7 muestra la información ordenada por categoría.
Trace.Warn("Page_Load", "Página cargada") |
El atributo Warn muestra el mensaje en rojo. Tenga en cuenta que este es un método sobrecargado. En el ejemplo, le pasamos dos parámetros. La primera categoría de entrada (Categoría), el segundo parámetro es para recibir el mensaje (Mensaje).
Además de configurar el modo de seguimiento mediante la clase Trace, también puede especificar el modo de seguimiento mediante directivas de página:
<%@ Page Language="vb" Trace="true" TraceMode="SortByCategory" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="WebApplication1.WebForm1" %> |
Seguimiento de la aplicación
La última sección analiza el seguimiento de páginas, que rastrea el flujo de información de ejecución dentro de una página. ASP.NET también admite el seguimiento a nivel de aplicación. El seguimiento a nivel de aplicación se establece en el archivo web.config, en la sección de seguimiento:
Para activar el seguimiento a nivel de aplicación, establezca los siguientes valores:
Propiedad | Valor | Descripción |
Enabled | True | Activa o desactiva el seguimiento a nivel de aplicación. |
requestLimit | 10 | establece el número máximo de solicitudes para realizar un seguimiento. |
pageOutput | False | muestra información de seguimiento al final de la página. |
traceMode | sortByTime | método de clasificación de información de seguimiento. |
localOnly | True | establece la capacidad de ver rastros del navegador en computadoras no locales. |
Cuando se carga la aplicación, la información de seguimiento no se muestra en la página. Para ver la información de seguimiento, necesitamos utilizar el visor de seguimiento (trace.axd):
Figura 7. Seguimiento a nivel de aplicación |
La Figura 7 muestra la información de seguimiento de las últimas seis solicitudes de la aplicación. Para ver detalles sobre cada solicitud, haga clic en el enlace "Ver detalles" para cada fila.
Tenga en cuenta que si el seguimiento se establece en verdadero en el archivo web.config y en falso en la directiva de la página, el seguimiento se deshabilitará.
Resumir
ASP.NET facilita mucho la depuración de aplicaciones web. Ahora que sabes cómo utilizar el seguimiento, pruébalo y comprueba cuánto mejora tu productividad.