Nivel de página de Asp.Net Tracdepuración, manejo de errores

⚡ Resumen inteligente

Depuración de ASP.NET, tracLa gestión de errores y el manejo de errores en Visual Studio ayudan a los desarrolladores a detectar problemas tempranamente y a dar seguimiento a las solicitudes. trace.axd, y redirigir a los usuarios a páginas de error personalizadas cuando se produzcan excepciones no controladas durante el ciclo de vida de desarrollo y producción.

  • ???? Depuración: Los puntos de interrupción en Visual Studio pausan la ejecución para que puedas inspeccionar una página ASP.NET en ejecución línea por línea.
  • 🔎 TracEn g: Habilitación trace en web.config agrega trace.axd, que enumera cada solicitud, su código de estado y el tiempo transcurrido.
  • 📄 Página TracEn g: Adición TracLa directiva Page, al establecer e="true", muestra la duración del ciclo de vida de una sola página.
  • ???? Errores personalizados: La etiqueta customErrors redirige a los usuarios a una página de error amigable cuando la aplicación falla.
  • 🧭 Excepciones no controladas: La función Application_Error en Global.asax detecta errores inesperados y redirige a una página segura.
  • 🗃️ Registro de errores: Escribir los detalles de Server.GetLastError en un archivo registra los problemas para su posterior depuración.

Nivel de página ASP.NET TracProgramación, depuración y manejo de errores

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 realizar esta función en 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?

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 marcha. Esto permite al desarrollador comprender qué sucede en el programa en un momento determinado.

Veamos un ejemplo de un programa. Este programa muestra al usuario la cadena "Estamos depurando". Supongamos que, al ejecutar la aplicación, por alguna razón, la cadena no se muestra. Para identificar el problema, necesitamos añadir un punto de interrupción. Podemos añadir un punto de interrupción en la línea de código que muestra la cadena. Este punto de interrupción pausará la ejecución del programa. En ese momento, el programador podrá ver qué está fallando y corregir el programa según sea necesario.

En este ejemplo, utilizaremos nuestra aplicación de demostración que creamos 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. Verifique que la aplicación DemoApplication esté abierta en Visual Studio.

Depurar una aplicación en ASP.NET

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.

Depurar una aplicación en ASP.NET

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.

Depurar una aplicación en ASP.NET

  1. Para añadir un punto de interrupción, haz clic en la columna donde quieras insertarlo. En este caso, queremos que el programa se detenga en la línea de código “Response.Write”. No necesitas añadir ningún comando; simplemente haz clic en la línea donde deseas insertarlo.
  2. 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: Puedes añadir varios 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.

Depurar una aplicación en ASP.NET

Salida:-

Depurar una aplicación en ASP.NET

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 Trac¿Cómo se hace en ASP.NET?

Aplicación tracinsights permite ver si alguna de las páginas solicitadas produce un error. Cuando tracing está habilitado, una página adicional llamada trace.axd se agrega a la aplicación (ver imagen a continuación). Esta página está integrada a la aplicación y mostrará todas las solicitudes y su estado.

Tracing en ASP.NET

Cómo habilitar TracIntroducción a una aplicación en ASP.NET

Veamos cómo habilitar tracbuscando un Aplicación ASP.NET:

Paso 1) Vamos a trabajar en nuestra aplicación de demostración. Abra el archivo web.config desde el Explorador de soluciones.

Activar tracpara una aplicación en ASP.NET

Paso 2) Agregue la siguiente línea de código al archivo web.config. tracLa declaración e se utiliza para habilitar tracsolicitando la aplicación.

  • El límite de solicitud en el tracLa declaración e especifica el número de solicitudes de página que deben ser traced.
  • En nuestro ejemplo, establecemos un límite de 40. Ponemos un límite porque un valor superior degradaría el rendimiento de la aplicación.

Activar tracpara una aplicación en ASP.NET

<?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 enabled="true" pageOutput="false" requestLimit="40" localOnly="false" />

    </system.web>
</configuration>

Ejecuta la aplicación de demostración en Visual Studio.

Salida:-

Activar tracpara una aplicación en ASP.NET

Si ahora navega a la URL http://localhost:53003/trace.axdAquí verá la información de cada solicitud. Podrá comprobar si se ha producido algún error en la aplicación. En la página se muestran los siguientes tipos de información:

  1. El momento de la solicitud de la página web.
  2. El nombre de la página web que se solicita.
  3. El código de estado de la solicitud web (un código de estado de 200 significa que la solicitud se realizó correctamente).
  4. El enlace "Ver detalles" permite consultar más información sobre la solicitud web. Un detalle importante que se proporciona es la información del encabezado, que muestra qué información se envía en el encabezado de cada solicitud web.

Activar tracpara una aplicación en ASP.NET

Nivel de página Tracing en ASP.NET

Nivel de página Tracinsights En ASP.NET, Visual Studio muestra información general sobre una página web durante su procesamiento. Esto resulta útil para la depuración si la página no funciona correctamente. Visual Studio proporciona información detallada sobre diversos aspectos de la página, como el tiempo de ejecución de cada método en la solicitud web.

Por ejemplo, si su aplicación web presenta problemas 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 TracImplementación a nivel de página en ASP.NET

Veamos cómo habilitar el nivel de página tracpara una aplicación ASP.NET:

Paso 1) Vamos a trabajar en nuestra aplicación de demostración. Abra el archivo demo.aspx desde el Explorador de soluciones.

Nivel de página Tracing en ASP.NET

Paso 2) Agregue la siguiente línea de código para habilitar la página. tracing. En la declaración de la página, simplemente agregue el atributo Trace="true". Esta línea de código permitirá el nivel de página tracing.

Nivel de página Tracing en ASP.NET

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Demo.aspx.cs" Inherits="DemoApplication.Demo" Trace="true" %>

<!DOCTYPE html>
<html xmlns="http://www.w3.org/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:-

Nivel de página Tracing en ASP.NET

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 agregaremos una página HTML. Esta página mostrará al usuario el mensaje "Estamos investigando el problema". A continuación, agregaremos un código de error a nuestra página demo.aspx para que se muestre la página de error. Sigamos los pasos que se indican a continuación.

Paso 1) Trabajemos en nuestra aplicación de demostración. Añadamos una página HTML a la aplicación.

  1. Haga clic con el botón derecho en la aplicación de demostración en el Explorador de soluciones.
  2. Seleccione la opción de menú Agregar->Página HTML.

Manejo de errores en ASP.NET

Paso 2) En el siguiente paso, debemos proporcionar un nombre a la nueva página HTML.

  1. Proporcione el nombre como ErrorPage.
  2. Haga clic en el botón Aceptar para continuar.

Manejo de errores en ASP.NET

Paso 3) La página de error se abrirá automáticamente en Visual Studio. Si accede al Explorador de soluciones, verá que el archivo se ha añadido.

Manejo de errores en ASP.NET

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 modificar el archivo web.config.

Manejo de errores en ASP.NET

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    We are looking into the problem
</body>
</html>

Paso 4) Ahora debes modificar el archivo web.config. Este cambio indicará que, cuando se produzca un error en la aplicación, se debe mostrar la página de error personalizada. La etiqueta customErrors permite definir dicha página. La propiedad defaultRedirect se establece con el nombre de la página de error personalizada que creamos en el paso anterior.

Manejo de errores en ASP.NET

<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 vamos a añadir 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.

Manejo de errores en ASP.NET

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 texto de un archivo.
  • Se supone que el archivo se encuentra 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.

Manejo de errores en ASP.NET

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:-

Manejo de errores en ASP.NET

La página anterior muestra que se produjo un error en la aplicación. Como resultado, se muestra al usuario la página ErrorPage.html.

Excepción no controlada de ASP.NET

Incluso en el mejor de los casos, pueden ocurrir errores imprevistos. Por ejemplo, si un usuario accede 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 de esto.

  • Vamos a utilizar nuestra misma aplicación de demostración que contiene el archivo 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) Vamos a trabajar en nuestra aplicación de demostración. Abra el archivo Global.asax.cs desde el Explorador de soluciones.

Excepción no controlada de ASP.NET

Nota: El archivo Global.asax.cs se utiliza para agregar código que será aplicable a todas las páginas de la aplicación.

Paso 2) Agregue la siguiente línea de código al archivo Global.asax.cs. Estas líneas se utilizarán para comprobar si hay errores y mostrar la página ErrorPage.html según corresponda.

Excepción no controlada de ASP.NET

namespace DemoApplication
{
    public class Global : System.Web.HttpApplication
    {
        protected void Application_Error(object sender, EventArgs e)
        {
            HttpException lastErrorWrapper = Server.GetLastError() as HttpException;

            if (lastErrorWrapper.GetHttpCode() == 404)
                Server.Transfer("~/ErrorPage.html");
        }
    }
}

Code Explicación:-

  1. La primera línea corresponde al controlador de eventos Application_Error. Este evento se activa cada vez que se produce un error en la aplicación. Tenga en cuenta que el nombre del evento debe ser Application_Error y los parámetros deben ser los que se muestran arriba.
  2. 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.
  3. A continuación, comprobamos 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 intenta acceder a una página que no se encuentra). Si el código de error coincide, redirigimos al usuario a la página ErrorPage.html.

Ahora ejecuta el código en Visual Studio y deberías 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.

Excepción no controlada en ASP.NET

La página anterior muestra que se produjo un error en la aplicación. Como resultado, se muestra al usuario la página ErrorPage.html.

Registro de errores de ASP.NET

Al registrar los errores de la aplicación, se facilita al desarrollador la depuración y resolución del problema posteriormente. ASP.NET cuenta con la funcionalidad para registrar errores. Esto se realiza en el archivo Global.asax.cs cuando se detecta el error. Durante el proceso de captura, el mensaje de error se puede escribir en un archivo de registro.

Veamos un ejemplo de esto.

  • Vamos a utilizar nuestra misma aplicación de demostración que contiene el archivo 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.
  • Al mismo tiempo, escribiremos el mensaje de error en un archivo de registro. Veamos los pasos para lograrlo.

Paso 1) Vamos a trabajar en nuestra aplicación de demostración. Abra el archivo Global.asax.cs desde el Explorador de soluciones.

Registro de errores de ASP.NET

Paso 2) Agregue la siguiente línea de código al archivo Global.asax.cs. Esta línea verificará si hay errores y mostrará la página ErrorPage.html según corresponda. Además, registraremos los detalles del error en un archivo llamado AllErrors.txt. Para este ejemplo, crearemos este archivo en la unidad D.

Registro de errores de ASP.NET

namespace DemoApplication
{
    public class Global : System.Web.HttpApplication
    {
        protected void Application_Error(object sender, EventArgs e)
        {
            Exception exc = Server.GetLastError();
            String str = "";
            str = exc.Message;

            String path = @"D:\AllErrors.txt";
            File.WriteAllText(path, str);
            Server.Transfer("~/ErrorPage.html");
        }
    }
}

Code Explicación:-

  1. La primera línea consiste en obtener el error en sí mismo utilizando el método Server.GetLastError. Este se asigna luego a la variable exc.
  2. A continuación, creamos una variable de cadena vacía llamada `str`. Obtenemos el mensaje de error real mediante la propiedad `exc.Message`. Esta propiedad contiene el mensaje exacto de cualquier error que se produzca al ejecutar la aplicación. Este mensaje se asigna a la variable de cadena.
  3. A continuación, definimos el archivo llamado AllErrors.txt. Aquí se guardarán todos los mensajes de error. Escribimos en este archivo la cadena `str` que contiene todos los mensajes de error.
  4. 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.

Registro de errores de ASP.NET

Y al mismo tiempo, si abre el archivo AllErrors.txt verá la siguiente información.

Registro de errores de ASP.NET

El mensaje de error se puede pasar luego al desarrollador para fines de depuración.

Preguntas Frecuentes

Sí. Las herramientas de IA, como GitHub Copilot, pueden sugerir puntos de interrupción, explicar excepciones y proponer soluciones para el código ASP.NET. RevRevisa cada sugerencia y reproduce el error tú mismo, ya que la IA puede interpretar erróneamente el estado específico de la aplicación.

Sí. Las funciones de aprendizaje automático en herramientas como Azure Application Insights puede detectar automáticamente picos inusuales de excepciones o solicitudes lentas. Esto ayuda a los equipos a encontrar problemas de producción más rápidamente que si revisaran manualmente los archivos de registro.

No. Al dejar el modo customErrors desactivado se expone la pila. traces y detalles confidenciales a cada visitante, lo que supone un riesgo de seguridad. Utilice el modo RemoteOnly o On en producción para que solo los desarrolladores locales vean los detalles completos del error.

RemoteOnly muestra páginas de error detalladas solo a los navegadores del servidor local, mientras que los usuarios remotos son redirigidos a la página defaultRedirect. Es una solución intermedia segura para depurar un sitio web en producción sin filtrar información.

Establezca debug="false" en el elemento de compilación de web.config. El modo de depuración desactiva las optimizaciones, mantiene los tiempos de espera largos y aumenta el uso de memoria, por lo que los sitios de producción siempre deben enviarse con él desactivado. Visual Studio.

No. Una apertura trace.axd puede revelar encabezados, sesiones y variables del servidor a los atacantes. Establezca localOnly=”true” o desactívelo. traccompletamente antes del despliegue, por lo tanto tracLos datos electrónicos nunca se exponen a usuarios remotos.

Server.Transfer reenvía la solicitud a la página de error del servidor sin cambiar el navegador. URL o haciendo un viaje de ida y vuelta. Response.Redirect envía una nueva solicitud al navegador, actualizando el URL a la página de error.

Capturar el mensaje de excepción, pila trace, solicitado URL, marca de tiempo y contexto del usuario. Estos detalles permiten a los desarrolladores reproducir el fallo posteriormente. Server.GetLastError en Application_Error expone la excepción para que pueda escribirla en un archivo o base de datos.

Resumir este post con: