El global.asax es el archivo de aplicación para todo proyecto ASP.NET, se encuentra en la raíz del proyecto. En él se declaran todos los eventos a nivel de aplicación como el inicio y fin de la misma, las peticiones web, etc… Es la evolución del antiguo global.asa existente en entornos de ASP clásico.
Se compila cada vez que inicia la aplicación. Cualquier modificación del archivo es detectada y origina el reinicio de la misma.
Eventos del global.asax
Entre todos los eventos global.asax, cabe destacar como principales los siguientes:
- Application_Init: Inicio de la aplicación
- Application_Disposed: Se dispara justo antes de que una aplicación sea destruida. Este método es ideal para limpiar anteriormente recursos que fueron utilizados.
- Application_Start: Se dispara cuando se ha creado la primera instancia de la clase HttpApplication. Esto permite crear objetos que son accesibles a las todas las instancias de HttpApplication.
- Application_End: Último evento lanzado antes de finalizar por completo la aplicación.
- Application_Error: Se ejecuta cuando salta un error no controlado dentro de la aplicación.
- Application_BeginRequest: Evento lanzado por cada petición de un cliente, ya sea el acceso a una url, una imagen, etc…
- Application_EndRequest: Último evento antes de dar finalizada una petición.
- Session_Start: Nueva sesión iniciada por un usuario. Muy usado junto al session_end para establecer contadores de usuarios activos.
- Session_End: Fin de sesión para un usuario.
Usos del global.asax
Puede ser usado para múltiples tareas de gestión de las aplicaciones. Unos ejemplos pueden ser:
- Declaración de filtros globales en el global.asax.
- Interactuar con todas las peticiones. Puede usarse para gestionar las peticiones, modificar variables de app, crear un log de las mismas, etc…
- Declarar modulos como el propio enrutado de asp.net.
- Gestionar los errores de la aplicación. Recogiendo los mismos dentro del evento onApplicationError, se puede establecer un control de estos, guardando un log y gestionando las redirecciones según el tratamiento deseado
Ejemplo de global.asax
Este es el global.asax generado por el visual studio al crear un nuevo proyecto en C#. En vb.net es igual con el único cambio de la sintaxis
using System; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Web; usingSystem.Web.Security; usingSystem.Web.SessionState; namespace WebApplication1 { public class Global : System.Web.HttpApplication { void Application_Start(object sender, EventArgs e) { // Código que se ejecuta al iniciarse la aplicación } void Application_End(object sender, EventArgs e) { // Código que se ejecuta cuando se cierra la aplicación } void Application_Error(object sender, EventArgs e) { // Código que se ejecuta al producirse un error no controlado } void Session_Start(object sender, EventArgs e) { // Código que se ejecuta cuando se inicia una nueva sesión } void Session_End(object sender, EventArgs e) { // Código que se ejecuta cuando finaliza una sesión. // Nota: el evento Session_End se desencadena sólo cuando el modo sessionstate // se establece como InProc en el archivo Web.config. Si el modo de sesión se establece como StateServer // o SQLServer, el evento no se genera. } } }
Te esperamos en los siguientes artículos en donde hablaremos mas acerca de estos temas, los cuales hoy en día son de vital importancia en el mundo de la tecnología.