Sunteți pe pagina 1din 8

Rastreo en ASP.

NET y WebServices
Por Mauro SantAnna (santanna@mas.com.br). Mauro es Director regional de MSDN, consultor e instructor de MAS Informtica (www.mas.com.br) y lleva organizando programas de formacin de la arquitectura .NET desde octubre de 2000. En el artculo anterior se explicaba cmo depurar un programa de ASP.NET o un servicio Web con Microsoft Visual Studio .NET. En el caso de la depuracin, nos interesa ejecutar el programa bajo un control estricto y examinar minuciosamente su funcionamiento interno. En el modo de rastreo, no estamos tan interesados en conocer detalladamente el proceso, sino en ejecutar el programa sin impedimentos y obtener informacin de mayor nivel acerca de lo que est ocurriendo. La librera de ASP.NET puede generar automticamente bastante informacin de rastreo. Para activar el modo de rastreo no es necesario modificar el programa, ni tener acceso a su cdigo fuente. Slo tenemos que cambiar una de las lneas del archivo web.config. Usar el ejemplo creado anteriormente en el artculo dedicado a la depuracin, pero Ud. puede experimentar con cualquier programa de Web creado con Visual Studio .NET.

Activacin del rastreo


Existen varias maneras de activar o desactivar el rastreo, pero la que considero ms recomendable es modificar una entrada del archivo XML web.config. En la etiqueta trace, debemos cambiar enabled=false a enabled=true:
<trace enabled="true" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="true" />

La modificacin puede realizarse desde Visual Studio o desde cualquier otro editor de texto. Para activar el rastreo ni siquiera es necesario recompilar el programa. Basta con guardar el archivo web.config. La aplicacin se reiniciar automticamente con el modo de rastreo en la prxima peticin realizada desde alguna pgina de la aplicacin.

Resultado del rastreo


En este momento, la aplicacin est recopilando informacin de rastreo. Por ello, necesitamos un programa que permita mostrar esta informacin. El mtodo ms sencillo es usar Internet Explorer y apuntar a una pgina especial en nuestra aplicacin, llamada trace.axd. Por ejemplo, si nuestro URL fuese http://localhost/Soma/WebForm1.aspx, nuestra aplicacin ser http://localhost/Soma/ y la pgina de rastreo es http://localhost/Soma/trace.axd. Observe que el rastreo es vlido para todas las pginas de la aplicacin. A continuacin aparece un ejemplo de resultado de rastreo:

La pgina anterior contiene una lista con los cuatro ltimos rastreos, con un mximo de diez. La cantidad mxima de pginas puede ser modificada con el parmetro requestLimit del archivo web.config. Vamos a seleccionar uno de los vnculos View Details (Ver detalles):

Resultado en la propia pgina


Es posible mostrar el resultado del rastreo en la propia pgina de la aplicacin, cambiando el parmetro pageOutput a true:
<trace enabled="true" requestLimit="10" pageOutput="true" traceMode="SortByTime" localOnly="true" />

Ahora la salida del rastreo se mezcla con el resultado de la aplicacin:

La utilizacin de esta pgina mezclada tiene ventajas y desventajas: Por un lado, no necesitamos llamar a una pgina concreta, pero por otro lado el resultado queda algo confuso. Esto queda al criterio de cada usuario.

Explicacin de la informacin mostrada


En Request Details (Solicitar detalles) contamos con determinada informacin evidente. Session ID (ID de sesin) es la clave que utiliza el mecanismo de variables de sesin de ASP.NET para identificar esta sesin. Se trata de la misma cadena que se muestra en el URL si estuviera utilizando sesiones sin cookies (la entrada <sessionState Cookieless = true> del archivo config.web). En Trace Information (Informacin de rastreo) se muestran los eventos a los que se ha llamado y cunto tiempo consumi. Resulta interesante observar el orden en el que se disparan los eventos y cul de ellos consume ms tiempo. Como veremos a continuacin, es posible situar informacin en esta seccin desde el programa. En Control Tree (rbol de control) aparece una lista con todos los controles creados por el servidor durante el procesamiento de la pgina, con indicacin de cuntos bytes gener cada uno en su salida y cunto uso hace cada uno del campo oculto __VIEWSTATE para almacenar el estado de la pgina. Esta informacin resulta interesante para saber si tenemos

muchos controles, lo que puede hacer que la aplicacin sea ms lenta, cul de ellos est generando ms salida y cules consumen ms espacio de __VIEWSTATE, ya que todo el contenido de este campo se enva de nuevo al examinador y puede afectar al rendimiento. En Cookie Collection (Coleccin de cookies) aparecen los cookies utilizados por la aplicacin. Para identificar la sesin, suele utilizarse un cookie que tiene el mismo nombre que el que aparece en Session ID (ID de sesin), si bien su programa puede tambin crear y utilizar otros cookies directamente, o incluso usar sesiones sin cookies. En Header Collection (Coleccin de cabeceras) aparecen exactamente las cabeceras enviadas por el examinador de Web, segn el protocolo HTTP. Ud. puede usar esta entrada para descubrir detalles del pedido, como por ejemplo la versin, el modelo y el fabricante del examinador que hizo la peticin. En Form Collection (Coleccin de formularios) o Query String Collection (Coleccin de cadenas de consulta) se muestran los pares nombre-valor enviados por el navegador, que suelen corresponder a los campos de la pgina. En Server Variables (Variables del servidor) se muestran las distintas variables enviadas a su programa por el servidor de Web, segn el protocolo CGI.

Cmo insertar nuestra propia informacin


Nuestros programas pueden incluir informacin en la salida del rastreo, gracias al mtodo Context.Trace.Write. Veamos un ejemplo:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim N1 As Double = TextBox1.Text Dim N2 As Double = TextBox1.Text Dim R = N1 + N2 ListBox1.Items.Add(R) Context.Trace.Write("Test", "Sum with " & N1 & " " & N2) End Sub

Vea el resultado de la pgina Web de rastreo, con nuestro mensaje destacado:

Aqu se muestra cmo el rastreo revela un error de programacin. Sabra identificar dnde se encuentra?

Otros ajustes
Las otras entradas de la etiqueta de Trace de XML tienen el significado siguiente: requestLimit: un nmero entero que indica cunta informacin de rastreo debe almacenarse en la memoria, en nmero de pginas. El valor predeterminado es 10. traceMode: indica cmo debe clasificarse el resultado del grupo Trace Information (Informacin de rastreo). Las opciones son SortByTime, para clasificar cronolgicamente, y SortByCategory, para clasificar por categoras (la categora es la primera cadena del mtodo Context.Trace.Write); localOnly: indica si la informacin de rastreo puede verse slo en el servidor (true) o en cualquier computadora (false). Para mayor seguridad, inicialmente slo puede ser vista en el servidor.

WebServices
Esta misma informacin est disponible para los servicios de Web y se activa del mismo modo. Veamos un ejemplo de rastreo para un servicio de Web sencillo que suma dos nmeros, probado desde el examinador con el mtodo GET:

El mismo servicio de Web probado desde una aplicacin desarrollada con Visual Studio .NET utiliza el mtodo SOAP y presenta una informacin ligeramente distinta. Por ejemplo, observe la cabecera SOAPAction en Headers Collection (Coleccin de cabeceras) y el User-Agent (Agente de usuario) que identifica al cliente .NET CLR versin 1.0.3328.4:

Conclusin
El rastreo permite obtener fcilmente distintos tipos de informacin de ejecucin de las aplicaciones de ASP.NET, lo que le permite conocer mejor lo que ocurre con la aplicacin, corregir errores y mejorar el rendimiento.

S-ar putea să vă placă și