Información general sobre el seguimiento en ASP.NET

Actualización: noviembre 2007

El seguimiento en ASP.NET le permite ver información de diagnóstico acerca de una única solicitud para una página ASP.NET. El seguimiento de ASP.NET permite seguir la ruta de acceso de ejecución de una página, mostrar información de diagnóstico en tiempo de ejecución y depurar la aplicación. El seguimiento de ASP.NET se puede integrar en un seguimiento del nivel del sistema que proporciona varios niveles de resultados de seguimiento en aplicaciones distribuidas y de varios niveles.

Este tema contiene:

  • Características

  • Background

  • Ejemplos de código

  • Referencia de clase

Características

La traza de ASP.NET ofrece las siguientes características:

  • Debugging statments   Puede escribir instrucciones de depuración en el código, sin necesidad de quitarlas de la aplicación cuando se implemente en los servidores de producción. También puede escribir variables o estructuras en una página y seguir la traza de la ruta de ejecución de la página o de la aplicación.

  • Integrated tracing functionality   Puede enrutar mensajes emitidos por la clase System.Diagnostics.Trace al resultado de traza de ASP.NET y enrutar mensajes emitidos por la traza de ASP.NET a System.Diagnostics.Trace. También puede reenviar los eventos de instrumentación de ASP.NET a System.Diagnostics.Trace. Para obtener más información, consulte Tutorial: Integrar el seguimiento en ASP.NET con las técnicas de seguimiento de System.Diagnostics.

  • Programmatic access to trace messages   Puede tener acceso y manipular mensajes de traza a partir del código para un control más preciso del formato de los mensajes de traza o para el procesamiento adicional que necesite.

  • Application-level tracing   La opción de traza del nivel de aplicación permite ver los datos de traza más recientes disponibles sin necesidad de reiniciar una sesión de traza ni de aumentar el volumen de datos de traza que debe almacenar el servidor. Se muestran los datos más recientes de traza y se descartan los más antiguos.

Volver al principio

Background

El seguimiento de traza anexa la información de diagnóstico y los mensajes de traza personalizados al resultado de la página y envían esta información al explorador que realizó la solicitud. Opcionalmente, puede ver esta información en otro visor de traza (Trace.axd), que muestra los datos de traza de todas las páginas de la aplicación web ASP.NET. La información de traza puede ayudarle a investigar errores o resultados no deseados mientras ASP.NET procesa una solicitud de página.

Puede configurar páginas individuales para mostrar información de seguimiento. De forma alternativa, puede configurar el archivo Web.config de la aplicación para que todas las páginas muestren información de seguimiento a menos que la página deshabilite explícitamente el seguimiento. El establecimiento de la traza en el nivel de aplicación es útil ya que no necesita realizar cambios en las páginas individuales para habilitarla y deshabilitarla.

Las instrucciones de seguimiento sólo se procesan y se muestran cuando el seguimiento está habilitado. Es posible controlar si el seguimiento se muestra en la página, en el visor de seguimiento o en ambos. Para obtener información acerca de la habilitación de la traza en una página, vea Cómo: Habilitar el seguimiento de una página ASP.NET. Para obtener información acerca de la habilitación de la traza en una aplicación, vea Cómo: Habilitar el seguimiento de una aplicación ASP.NET.

Traza de ASP.NET en la aplicación

La traza en el nivel de aplicación se habilita mediante el elemento trace del archivo Web.config. Cuando se habilita el seguimiento del nivel de aplicación, ASP.NET recopila la información de seguimiento de cada solicitud realizada a la aplicación, hasta llegar al número máximo de solicitudes especificado. El número predeterminado de solicitudes es 10. De forma predeterminada, cuando el visor de seguimiento alcanza este límite, la aplicación deja de almacenar solicitudes de seguimiento. Puede configurar la traza para almacenar los datos de seguimiento más antiguos (descartando elementos más recientes) o la información de traza más reciente (descartado elementos más antiguos).

Nota:

Cuando habilita la traza para toda la aplicación en el archivo Web.config, la información se recopila y procesa para cada página de la aplicación. Para reemplazar la configuración de la aplicación, establezca el atributo Trace en la directiva @ Page de esa página en false. Las instrucciones Write o Warn que incluya en el código de una página se almacenan y envían únicamente al visor de seguimiento.

Ver información de seguimiento

Puede ver la información de traza en la parte inferior de páginas individuales. También puede utilizar el visor de traza (Trace.axd) para ver información de traza que ASP.NET recopila y almacena en caché cuando la traza está habilitada. Para obtener detalles sobre la información que incluye la presentación de la traza, vea Leer información de traza de ASP.NET más adelante en este tema.

Si desea que la información de seguimiento aparezca al final de la página que está asociada a ella, puede establecer el atributo PageOutput del elemento trace en true. Si habilita la traza en el nivel de aplicación pero no desea que se muestre información de traza de algunas páginas, puede establecer el atributo Trace de la directiva @ Page de esas páginas en false. Para obtener más información sobre cómo configurar una aplicación ASP.NET, vea Información general sobre la configuración de ASP.NET.

De forma predeterminada, el seguimiento de nivel de aplicación se puede ver sólo en el equipo local del servidor Web. Para hacer que la información de seguimiento del nivel de aplicación sea visible desde equipos remotos, puede establecer el atributo LocalOnly del elemento trace en false.

Nota:

Para ayudar a proteger la aplicación web, utilice la capacidad de traza remota únicamente cuando programe o instale la aplicación. Asegúrese de que la deshabilita antes de transferir la aplicación a los servidores web de producción. Para ello, establezca el atributo LocalOnly en true en el archivo Web.config.

El ejemplo siguiente muestra una configuración de traza de aplicación que recoge información de traza para un máximo de 40 solicitudes. También habilita exploradores en equipos distintos del servidor para mostrar el visor de traza.

<configuration>
  <system.web>
    <trace enabled="true" requestLimit="40" localOnly="false" />
  </system.web>
</configuration>

Escribir mensajes de seguimiento de ASP.NET personalizados

Puede anexar la información de traza personalizada a la presentación de traza de una página ASP.NET o al registro de traza. La información de traza que se escribe en el registro de traza se puede ver con el visor de traza. Para obtener más información, consulte Cómo: Ver información de seguimiento de ASP.NET con el visor de seguimiento.

Puede escribir información de traza mediante los métodos Warn o Write de la clase TraceContext. La diferencia entre los dos métodos es que un mensaje escrito con el método Warn aparece con el texto en rojo.

El ejemplo de código siguiente muestra cómo usar la clase TraceContext para mostrar información de traza al final de una página ASP.NET. Se inicia una excepción diferente para cada control LinkButton que produjo la devolución de datos. El mensaje de error que se usa para inicializar las instancias ArgumentException o InvalidOperationException se muestra en el registro de traza.

<%@ Page Language="VB" Trace="true" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<script >

  Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)

    Try
      If (IsPostBack) Then

        Select Case Request.Form("__EVENTTARGET")
          Case "WarnLink"
            Throw New ArgumentException("Trace warn.")
          Case "WriteLink"
            Throw New InvalidOperationException("Trace write.")
          Case Else
            Throw New ArgumentException("General exception.")
        End Select  
      End If
    Catch ae As ArgumentException
      Trace.Warn("Exception Handling", "Warning: Page_Load.", ae)
    Catch ioe As InvalidOperationException
      Trace.Write("Exception Handling", "Exception: Page_Load.", ioe)
    End Try
  End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head >
    <title>Trace Example</title>
</head>
<body>
    <form id="form1" >
    <div>
      <asp:LinkButton id="WriteLink" 
                      
                      text="Generate Trace Write" />
      <asp:LinkButton id="WarnLink"
                      
                      text="Generate Trace Warn" />
    </div>
    </form>
</body>
</html>
<%@ Page Language="C#" Trace="true"  %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<script >
void Page_Load(object sender, EventArgs e)
{
    try {
      if (IsPostBack)
      {

        switch (Request.Form["__EVENTTARGET"])
        {
          case "WarnLink":
            throw new ArgumentException("Trace warn.");
            break;
          case "WriteLink":
            throw new InvalidOperationException("Trace write.");
            break;
          default:
            throw new ArgumentException("General exception.");
            break;          
        }
      }
    }
    catch (ArgumentException ae) {    
        Trace.Warn("Exception Handling", "Warning: Page_Load.", ae);
    }
    catch (InvalidOperationException ioe) {    
        Trace.Write("Exception Handling", "Exception: Page_Load.", ioe);
    }
}

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head >
    <title>Trace Example</title>
</head>
<body>
    <form id="form1" >
    <div>
      <asp:LinkButton id="WriteLink" 
                      
                      text="Generate Trace Write" />
      <asp:LinkButton id="WarnLink"
                      
                      text="Generate Trace Warn" />
    </div>
    </form>
</body>
</html>

Leer la información de seguimiento de ASP.NET

Puede ver la información de traza que se anexa al final de una página ASP.NET o en el visor de traza. En ambos casos, la información mostrada es la misma. ASP.NET organiza la información de traza en una serie de tablas. Para obtener información sobre cómo ver información de traza en una página, vea Cómo: Habilitar el seguimiento de una página ASP.NET. Para obtener información sobre cómo ver información de traza en el visor de traza, vea Cómo: Ver información de seguimiento de ASP.NET con el visor de seguimiento.

La información de seguimiento aparece en el orden siguiente.

Detalles de la solicitud

La sección Detalles de la solicitud muestra información general sobre la solicitud actual y la respuesta.

Valor

Descripción

Id. de sesión

Identificación de sesión de la solicitud especificada.

Hora de la solicitud

Hora en que se efectuó la solicitud.

Codificación de la solicitud

Codificación de caracteres de la solicitud.

Tipo de solicitud

Método HTTP (GET o POST).

Código de estado

Valor de código de estado asociado a la respuesta. Para obtener más información, vea RFC 2616 en World Wide Web Consortium (W3C) Web site.

Codificación de respuesta

Codificación de caracteres para la respuesta.

Información de seguimiento

La sección Información de seguimiento muestra el flujo de eventos del nivel de página. Si ha creado mensajes de seguimiento personalizados, los mensajes también se muestran en la sección Información de seguimiento.

Valor

Descripción

Category

Categoría de seguimiento personalizada especificada en una llamada al método Warn u Write, si la hay.

Message

Mensaje de seguimiento personalizado especificado en una llamada al método Warn u Write, si lo hay.

Desde los primeros

Tiempo transcurrido en segundos desde que se procesó el primer mensaje de seguimiento. El primer mensaje de seguimiento aparece en la parte superior de la lista.

Desde los últimos

Tiempo transcurrido en segundos entre el procesamiento del mensaje de traza actual y el mensaje de traza anterior.

Árbol de control

La sección Árbol de control muestra información sobre los controles de servidor ASP.NET que se crean en la página.

Valor

Descripción

Id. de control

Identificación del control. Si no ha especificado una propiedad ID para el control, ASP.NET genera ID mediante la propiedad UniqueID.

Type

Nombre de tipo completo del control.

Bytes de tamaño del la representación

Tamaño del control representado en bytes (incluidos los controles secundarios). Se trata del tamaño del contenido HTML, XML, etc., real que se envía al explorador.

Tamaño en bytes de ViewState

Tamaño en bytes del estado de vista del control (excluidos los controles secundarios). Para obtener más información, vea Información general sobre la administración de estados de ASP.NET.

Tamaño en bytes de ControlState

Tamaño en bytes del estado de control del control (excluidos los controles secundarios). Para obtener más información, vea Información general sobre la administración de estados de ASP.NET.

Estado de sesión

La sección Estado de sesión muestra información sobre los valores que se almacenan en el estado de sesión, si la hay. Para obtener más información, vea Información general sobre el estado de sesión de ASP.NET.

Valor

Descripción

Clave de sesión

Clave para datos almacenados en el estado de sesión, si la hay.

Type

Tipo completo del objeto que almacena los datos.

Valor

Representación de cadena de los datos almacenados en el estado de sesión, si la hay.

Estado de aplicación

La sección Estado de la aplicación muestra información sobre los valores almacenados en el estado de la aplicación, si la hay. Para obtener más información, vea Información general sobre el estado de aplicación de ASP.NET.

Valor

Descripción

Clave de aplicación

Clave para datos almacenados en el estado de aplicación, si la hay.

Type

Tipo completo del objeto que almacena los datos.

Valor

Representación de cadena de los datos que se almacenan en el estado de aplicación, si la hay.

Colección Cookies

Las secciones Cookies de solicitud y Cookies de respuesta muestran información sobre las cookies que se pasan entre el explorador y el servidor en cada solicitud y respuesta. La sección muestra cookies permanentes y de la sesión. ASP.NET crea automáticamente algunas cookies, como las del estado de sesión basada en cookies y las de autenticación de formularios. Para obtener más información, vea Información general sobre las cookies en ASP.NET.

Valor

Descripción

Nombre

Nombre de la cookie.

Valor

Valor de la cookie o de las subclaves y valores, en caso de que la cookie tenga valores múltiples.

Size

Tamaño de la cookie en bytes.

Colección Headers

La sección Colección de encabezados muestra información sobre los pares nombre/valor de los encabezados de los mensajes de solicitud y respuesta, que proporcionan información sobre el cuerpo del mensaje o el recurso solicitado. La información de encabezado se utiliza para controlar cómo se procesan los mensajes de solicitud y cómo se crean los mensajes de respuesta. Para obtener más información sobre encabezados HTTP, vea RFC 2616 en World Wide Web Consortium (W3C) Web site.

Valor

Descripción

Nombre

Nombre del encabezado.

Valor

Valor del encabezado.

Colección Form

La sección Colección de formularios muestra pares de nombre/valor que indican los valores de elementos de formulario (valores de control) que se envían en una solicitud durante una operación POST (devolución de datos).

Valor

Descripción

Nombre

Nombre de la variable de formulario.

Valor

Valor de la variable de formulario.

Colección de cadenas de consulta

La sección Colección de cadenas de consulta muestra los valores que se pasan a la dirección URL. En una dirección URL, la información de la cadena de consulta se separa de la información de la ruta de acceso mediante un signo de interrogación (?); los elementos múltiples de la cadena de consulta se separan mediante un signo de Y comercial (&). Los pares de nombre/valor de la cadena de consulta se separan mediante un signo igual (=). La propiedad QueryString del objeto HttpRequest devuelve NameValueCollection de variables de la cadena de consulta.

Valor

Descripción

Nombre

Nombre de la variable de la cadena de consulta.

Valor

Valor de la variable de la cadena de consulta.

Variables de servidor

La sección Variables de servidor muestra una colección de variables de entorno relacionadas con el servidor e información del encabezado de la solicitud. La propiedad ServerVariables del objeto HttpRequest devuelve NameValueCollection de variables del servidor.

Valor

Descripción

Nombre

Nombre de la variable de servidor.

Valor

Valor de la variable de servidor.

Volver al principio

Seguimiento en ASP.NET y seguimiento de diagnósticos

El seguimiento en ASP.NET escribe mensajes que se muestran en las páginas Web ASP.NET y el visor de seguimiento de ASP.NET (Trace.axd). En cambio, la clase System.Diagnostics.Trace se utiliza para seguir la traza de los mensajes de escritura en el resultado de traza de .NET Framework estándar (normalmente una ventana de consola). Para facilitar el seguimiento de la interacción entre las páginas web ASP.NET y los objetos de negocios y otros componentes, puede integrar el resultado de traza de ASP.NET con la traza de System.Diagnostics. A continuación puede enrutar todos los mensajes de traza a una de estas salidas.

Un escenario común que usa tanto la traza en ASP.NET como System.Diagnostics.Trace son las páginas web que utilizan objetos de negocios de nivel intermedio para interactuar con datos y reglas de negocios. También puede usar System.Diagnostics.Trace en las páginas que usan servicios de la empresa como transacciones y colas. En estas situaciones, los componentes de empresa y negocio representan papeles clave en la ejecución correcta de la página. Además, puede ayudar con el análisis de la aplicación a supervisar el flujo de ejecución entre los diferentes niveles mediante un resultado de traza único. Para obtener más información, consulte Cómo: Habilitar el seguimiento de una aplicación ASP.NET.

Atributos de configuración del seguimiento

La tabla siguiente muestra los atributos que puede utilizar para modificar el comportamiento de la traza en el nivel de aplicación en el elemento trace del archivo Web.config.

Attribute

Descripción

Enabled

true para habilitar el seguimiento para a aplicación; de lo contrario, false. De manera predeterminada, es false. Puede reemplazar esta configuración para las páginas individuales si establece el atributo Trace de la directiva @ Page de una página en true o false.

PageOutput

true para mostrar el seguimiento tanto en páginas como en el visor de seguimiento (Trace.axd); de lo contrario, false. De manera predeterminada, es false.

Nota:
Las páginas individuales con el seguimiento habilitado no se ven afectadas por esta configuración.

RequestLimit

Número de solicitudes de seguimiento que se almacenan en el servidor. El valor predeterminado es 10.

TraceMode

Orden en que se muestra la información de seguimiento. Establezca en SortByTime para ordenar en el orden en el que se procesó la información. Establezca en SortByCategory para ordenar alfabéticamente por categorías definidas por el usuario. De manera predeterminada, es SortByTime.

LocalOnly

true para hacer que el visor de seguimiento (Trace.axd) esté disponible sólo para el servidor Web de host; de lo contrario, false. De manera predeterminada, es true.

MostRecent

true para mostrar la información de traza más reciente como resultado de traza; de lo contrario, false. Si este valor es false, cuando se supera el valor de requestLimit, las nuevas solicitudes no se almacenan. De manera predeterminada, es false.

Nota:
Los datos de seguimiento que superan el límite definido por el atributo requestLimit se rechazan a favor de los más recientes sólo cuando mostRecent es true.

Ejemplos de código

Temas "Cómo..." y tutoriales

Cómo: Habilitar el seguimiento de una página ASP.NET

Cómo: Habilitar el seguimiento de una aplicación ASP.NET

Cómo: Ver información de seguimiento de ASP.NET con el visor de seguimiento

Tutorial: Integrar el seguimiento en ASP.NET con las técnicas de seguimiento de System.Diagnostics

Volver al principio

Referencia de clase

Clase   

Descripción

System.Diagnostics.Trace

La clase principal para implementar la traza.

TraceContext

Captura y muestra los detalles de ejecución acerca de una solicitud Web.

Volver al principio

Vea también

Conceptos

Rendimiento, solución de problemas y depuración

Referencia

Volver al principio