Seguimiento, depuración y manejo de errores a nivel de página de Asp.Net [Ejemplo]
En cualquier aplicación, es probable que se produzcan errores durante el proceso de desarrollo. Es importante poder descubrir errores en una etapa temprana.
En Visual Studio, es posible hacer esto para las aplicaciones ASP.Net. Visual Studio se utiliza para la depuración y cuenta con técnicas de manejo de errores para ASP.Net.
¿Qué es la depuración en ASP.NET?
La depuración es el proceso de agregar puntos de interrupción a una aplicación. Estos puntos de interrupción se utilizan para pausar la ejecución de un programa en ejecución. Esto permite al desarrollador comprender lo que está sucediendo en un programa en un momento determinado.
Tomemos el ejemplo de un programa. El programa muestra una cadena que dice “Estamos depurando” al usuario. Supongamos que cuando ejecutamos la aplicación, por alguna razón, la cadena no se muestra. Para identificar el problema, necesitamos agregar un punto de interrupción. Podemos agregar un punto de interrupción a la línea de código que muestra la cadena. Este punto de interrupción pausará la ejecución del programa. En este punto, el programador puede ver qué es lo que posiblemente esté fallando y rectifica el programa en consecuencia.
En este ejemplo, utilizaremos nuestra 'DemoApplication' que se creó en capítulos anteriores. En el siguiente ejemplo, veremos
- Cómo hacer que la aplicación de demostración muestre una cadena.
- Cómo agregar puntos de interrupción a una aplicación.
- Cómo depurar la aplicación utilizando este punto de interrupción.
Cómo depurar una aplicación en ASP.NET
A continuación se detallan los pasos para crear una aplicación de demostración, agregar puntos de interrupción y depurar en ASP.Net:
Paso 1) Abra la aplicación en Visual Studio
Primero, asegurémonos de que nuestra aplicación web esté abierta en Visual Studio. Asegúrese de que DemoApplication esté abierta en Visual Studio.
Paso 2) Ahora abra el archivo Demo.aspx.cs y agregue la siguiente línea de código.
- Simplemente estamos agregando la línea de código Response.Write para mostrar una cadena.
- Entonces, cuando se ejecuta la aplicación, debería mostrar la cadena "Estamos depurando" en el navegador web.
namespace DemoApplication { public partial class Demo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Response.Write("We are debugging"); } } }
Paso 3) Agregue un punto de interrupción a la aplicación
Un punto de interrupción es un punto en Visual Studio donde desea que se detenga la ejecución del programa.
- Para agregar un punto de interrupción, debe hacer clic en la columna donde desea insertar el punto de interrupción. Entonces, en nuestro caso, queremos que nuestro programa se detenga en la línea de código "Response.Write". No es necesario agregar ningún comando para agregar un punto de interrupción. Sólo necesita hacer clic en la línea en la que desea agregar un punto de interrupción.
- Una vez hecho esto, notarás que el código queda marcado en rojo. Además, aparece una burbuja roja en la columna al lado de la línea de código.
Nota: - Puede agregar múltiples puntos de interrupción en una aplicación
Paso 4) Ejecute la aplicación en modo de depuración
Ahora debe ejecutar su aplicación en modo de depuración. En Visual Studio, elija la opción de menú Depurar->Iniciar depuración.
Salida:-
Cuando realice todos los pasos correctamente, la ejecución del programa se interrumpirá. Visual Studio irá al punto de interrupción y marcará la línea de código en amarillo.
Ahora, si el programador considera que el código es incorrecto, se puede detener la ejecución. Luego, el código se puede modificar en consecuencia. Para continuar con el programa, el programador debe hacer clic en el botón F5 del teclado.
¿Qué es el seguimiento en ASP.NET?
El seguimiento de aplicaciones permite ver si alguna de las páginas solicitadas genera un error. Cuando el seguimiento está habilitado, se agrega a la aplicación una página adicional llamada trace.axd. (Ver imagen a continuación). Esta página está adjunta a la solicitud. Esta página mostrará todas las solicitudes y su estado.
Cómo habilitar el seguimiento de una aplicación en ASP.NET
Veamos cómo habilitar el seguimiento de un Aplicación ASP.Net:
Paso 1) Trabajemos en nuestra 'Aplicación de demostración'. Abra el archivo web.config desde el Explorador de soluciones.
Paso 2) Agregue la siguiente línea de código al archivo Web.config.
La declaración de seguimiento se utiliza para habilitar el seguimiento de la aplicación.
- Se utiliza el 'requestLimit' en la declaración de seguimiento. Especifica el número de solicitudes de página que se deben rastrear.
- En nuestro ejemplo, damos un límite de 40. Damos un límite porque un valor más alto degradará el rendimiento de la aplicación.
<?xml version="1.0" encoding="utf-8"?> <! -- For more information on how to configure your ASP.NET application, please visit http://go.microsoft.com/fwlink/?LinkId=169433 --> <configuration> <system.web> <compilation debug="true" targetFramework="4.0" /> <httpRuntime targetFramework="4.0” /> <trace enable="true" pageOutput="false" requestLimit="40" localOnly="false"/> </system.web> </configuration>
Ejecute la “aplicación de demostración” en Visual Studio.
Salida:-
Si ahora navega hasta la URL – http://localhost:53003/trace.axd , verá la información de cada solicitud. Aquí puede ver si se produce algún error en una solicitud. Los siguientes tipos de información se muestran en la página anterior
- El momento de la solicitud de la página web.
- El nombre de la página web que se solicita.
- El código de estado de la solicitud web. (el código de estado 200 significa que la solicitud se realizó correctamente).
- Ver detalles permite ver más detalles sobre la solicitud web. A continuación se muestra un ejemplo. Una información detallada importante que se proporciona es la información del encabezado. Esta información muestra qué información se envía en el encabezado de cada solicitud web.
Seguimiento a nivel de página en ASP.NET
Seguimiento a nivel de página En ASP.Net se muestra toda la información general sobre una página web cuando se está procesando. Esto resulta útil para la depuración si una página no funciona por algún motivo. Visual Studio proporciona información detallada sobre diversos aspectos de la página e información como el tiempo de cada método que se llama en la solicitud web.
Por ejemplo, si su aplicación web tiene un problema de rendimiento, esta información puede ayudar a depurar el problema. Esta información se muestra cuando la aplicación se ejecuta en Visual Studio.
Cómo habilitar el seguimiento a nivel de página en ASP.NET
Veamos cómo habilitar el seguimiento a nivel de página para una aplicación ASP.Net:
Paso 1) Trabajemos en nuestra aplicación de demostración. Abra el archivo demo.aspx desde el Explorador de soluciones
Paso 2) Agregue la siguiente línea de código para habilitar el seguimiento de páginas. En la declaración de la página, simplemente agregue la línea Trace=”true”. Esta línea de código permitirá el seguimiento a nivel de página.
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Demo.aspx.cs" Inherits="DemoApplication.Demo" %> <!DOCTYPE html> <html xmlns="http://www.w3.ore/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server”> </form> </body> </html>
Ejecute la aplicación en Visual Studio.
Salida:-
Ahora, cuando se muestre la página web Demo.aspx, obtendrá una gran cantidad de información sobre la página. En esta página se muestra información como el tiempo para cada aspecto del ciclo de vida de la página.
Manejo de errores: visualización de una página de error personalizada
In ASP.Net, puede hacer que se muestren páginas de error personalizadas a los usuarios. Si una aplicación contiene algún tipo de error, una página personalizada mostrará ese error al usuario.
En nuestro ejemplo, primero vamos a agregar una página HTML. Esta página mostrará una cadena al usuario "Estamos investigando el problema". Luego agregaremos algún código de error a nuestra página demo.aspx para que se muestre la página de error.
Sigamos los pasos mencionados a continuación.
Paso 1) Trabajemos en nuestra aplicación de demostración. Agreguemos una página HTML a la aplicación.
- Haga clic derecho en la aplicación de demostración en el Explorador de soluciones.
- Elija la opción de menú 'Agregar'->Página HTML
Paso 2) En el siguiente paso, debemos proporcionar un nombre a la nueva página HTML.
- Proporcione el nombre como "Página de error".
- Haga clic en el botón "Aceptar" para continuar.
Paso 3) La página de error se abrirá automáticamente en Visual Studio. Si accede al Explorador de soluciones, verá que se agregó el archivo.
Agregue la línea de código "Estamos investigando el problema" a la página HTML. No es necesario cerrar el archivo HTML antes de realizar el cambio en el archivo web.config.
<!DOCTYPE html> <html xmlns="http://www.w3.ore/1999/xhtml"> <head runat="server"> <title></title> </head> <body> We are looking into the problem </body> </html>
Paso 4) Ahora debe realizar un cambio en el archivo web.config. Este cambio notificará que, siempre que se produzca un error en la aplicación, se debe mostrar la página de error personalizada.
La etiqueta 'customErrors' permite definir una página de error personalizada. La propiedad defaultRedirect se establece en el nombre de nuestra página de error personalizada creada en el paso anterior.
<configuration> <system.web> <compilation debug="true" targetFramework="4.0" /> <httpRuntime targetFramework="4.0” /> <customErrors mode="On" defaultRedirect="ErrorPage.html"> </customErrors> </system.web> </configuration>
Paso 5) Ahora, agreguemos un código defectuoso a la página demo.aspx.cs. Abra esta página haciendo doble clic en el archivo en el Explorador de soluciones
Agregue el siguiente código al archivo Demo.aspx.cs.
- Estas líneas de código están diseñadas para leer las líneas de un texto de un archivo.
- Se supone que el archivo está ubicado en la unidad D con el nombre "Example.txt".
- Pero en nuestra situación, este archivo realmente no existe. Entonces este código generará un error cuando se ejecute la aplicación.
namespace DemoApplication { public partial class Demo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { String path = @"D:\Example.txt"; string[] lines; lines = File.ReadAllLines(path); } } }
Ahora ejecuta el código en Visual Studio y debería obtener el siguiente resultado.
Salida:-
La página anterior muestra que se ha producido un error en la aplicación. Como resultado, se muestra al usuario la página Error.html.
Excepción no controlada de ASP.NET
Incluso en el mejor de los casos, puede haber casos de errores que simplemente no están previstos.
Supongamos que un usuario navega a la página incorrecta de la aplicación. Esto es algo que no se puede predecir. En tales casos, ASP.Net puede redirigir al usuario a errorpage.html.
Veamos un ejemplo sobre esto.
- Usaremos nuestra misma 'Aplicación de demostración' que tiene Errorpage.html.
- E intentaremos ver una página web que no existe en nuestra aplicación.
- En este caso, deberíamos ser redirigidos a nuestra página ErrorPage.html. Veamos los pasos para lograrlo.
Paso 1) Trabajemos en nuestra aplicación de demostración. Abra el archivo Global.asax.cs desde el Explorador de soluciones
NOTA: El archivo global.asax.cs se utiliza para agregar código que será aplicable en todas las páginas de la aplicación.
Paso 2) Agregue la siguiente línea de código a global.asax.cs. Estas líneas se utilizarán para comprobar si hay errores y mostrar la página ErrorPage.html en consecuencia.
namespace DemoApplication { public partial class Demo : System.Web.UI.Page { protected void Application_Error(object sender, EventArgs e) { ? HttpException lastErrorWrapper = Server.GetLastError() as HttpException; if(lastErrorWrapper.GetHttpCode() == 404) Server.T ransfer("~/ErrorPage.html"); } } }
Explicación del código: -
- La primera línea es el controlador de eventos Application_Error. Este evento se llama cada vez que ocurre un error en una aplicación. Tenga en cuenta que el nombre del evento debe ser "Application_Error". Y los parámetros deben ser como se muestra arriba.
- A continuación, definimos un objeto de tipo de clase HttpException. Se trata de un objeto estándar que contendrá todos los detalles del error. A continuación, utilizamos el método Server.GetLastError para obtener todos los detalles del último error ocurrido en la aplicación.
- Luego verificamos si el código de error del último error es 404. (El código de error 404 es el código estándar que se devuelve cuando un usuario navega a una página que no se encuentra). Luego transferimos al usuario a la página ErrorPage.html si el código de error coincide.
Ahora ejecute el código en Visual Studio y debería obtener el siguiente resultado
Salida:-
Navegar por la página http://localhost:53003/Demo1.aspx . Recuerde que Demo1.aspx no existe en nuestra aplicación. Luego obtendrá el siguiente resultado.
La página anterior muestra que se ha producido un error en la aplicación. Como resultado, se muestra al usuario la página Error.html.
Registro de errores de ASP.NET
Al registrar los errores de la aplicación, se ayuda al desarrollador a depurarlos y resolverlos en un momento posterior. ASP.Net tiene la función de registrar errores. Esto se hace en el archivo Global.asax.cs cuando se captura el error. Durante el proceso de captura, el mensaje de error se puede escribir en un archivo de registro.
Veamos un ejemplo sobre esto.
- Usaremos nuestra misma aplicación de demostración que tiene Errorpage.html.
- E intentaremos ver una página web que no existe en nuestra aplicación.
- En este caso, deberíamos ser redirigidos a nuestra página ErrorPage.html.
- Y al mismo tiempo, escribiremos el mensaje de error en un archivo de registro. Veamos los pasos para lograrlo.
Paso 1) Trabajemos en nuestra aplicación de demostración. Abra el archivo Global.asax.cs desde el Explorador de soluciones
Paso 2) Agregue la siguiente línea de código a global.asax.cs. Verificará si hay errores y mostrará la página ErrorPage.html en consecuencia. Además, al mismo tiempo, registraremos los detalles del error en un archivo llamado 'AllErrors.txt'. Para nuestro ejemplo, escribiremos código para que este archivo se cree en la unidad D.
namespace DemoApplication { public partial class Demo : System.Web.UI.Page { protected void Application_Error(object sender, EventArgs e) { Exception exc = Server.GetLastError(); String str =""; str = exc.Message; String path = @"D:\AllErrors.txt"; File.WriteAllTest(path,str); Server.trrasfer("~/ErrorPage.html"); } } }
Explicación del código: -
- La primera línea es obtener el error mediante el método 'Server.GetLastError'. Luego se asigna a la variable "exc".
- Luego creamos una variable de cadena vacía llamada "str". Obtenemos el mensaje de error real utilizando la propiedad 'exc.Message'. La propiedad exc.Message tendrá el mensaje exacto para cualquier error que ocurra al ejecutar la aplicación. Luego se asigna a la variable de cadena.
- A continuación, definimos el archivo llamado "AllErrrors.txt". Aquí es donde se enviarán todos los mensajes de error. Escribimos la cadena 'str' que contiene todos los mensajes de error en este archivo.
- Finalmente, transferimos el usuario al archivo ErrorPage.html.
Salida:-
Navegar por la página http://localhost:53003/Demo1.aspx . Recuerde que Demo1.aspx no existe en nuestra aplicación. Luego obtendrá el siguiente resultado.
Y al mismo tiempo, si abre el archivo 'AllErrors.txt' verá la siguiente información.
El mensaje de error se puede pasar luego al desarrollador para fines de depuración.
Resumen
- ASP.Net tiene la posibilidad de realizar depuración y manejo de errores.
- La depuración se puede lograr agregando puntos de interrupción al código. Luego, se ejecuta la opción Comenzar con depuración en Visual Studio para depurar el código.
- El rastreo es la posibilidad de proporcionar más información mientras se ejecuta la aplicación. Esto se puede hacer a nivel de aplicación o de página.
- A nivel de página, el código Trace=true debe agregarse a la directiva de página.
- En el nivel de la aplicación, se crea una página adicional llamada Trace.axd para la aplicación. Esto proporciona toda la información de seguimiento necesaria.