Los archivos Global.asax, a veces denominados archivos de aplicación ASP.NET, proporcionan una ubicación central para responder a eventos a nivel de aplicación o de módulo. Puede utilizar este archivo para implementar la seguridad de la aplicación y otras tareas.
El archivo Global.asax está configurado para que cualquier solicitud HTTP directa (a través de la URL) se rechace automáticamente, por lo que los usuarios no pueden descargar ni ver su contenido. El marco de la página ASP.NET reconoce automáticamente cualquier cambio realizado en el archivo Global.asax. El marco de la página ASP.NET reinicia la aplicación después de cambiar Global.asax, lo que incluye cerrar todas las sesiones del navegador, eliminar toda la información de estado y reiniciar el dominio de la aplicación.
El archivo Global.asax hereda de la clase HttpApplication, que mantiene un grupo de objetos HttpApplication y asigna objetos en el grupo a aplicaciones cuando es necesario. El archivo Global.asax contiene los siguientes eventos:
· Application_Init: este evento se activa cuando se crea una instancia de la aplicación o se llama por primera vez. Se llamará para todas las instancias del objeto HttpApplication.
· Application_Disposed: Se activa antes de que se destruya la aplicación. Este es un lugar ideal para limpiar los recursos utilizados anteriormente.
· Application_Error: este evento se activa cuando se encuentra una excepción no controlada en la aplicación.
· Application_Start: este evento se activa cuando se crea la primera instancia de la clase HttpApplication. Le permite crear objetos a los que pueden acceder todas las instancias de HttpApplication.
· Application_End: este evento se activa cuando se destruye la última instancia de la clase HttpApplication. Se activa sólo una vez durante la vida de una aplicación.
· Application_BeginRequest: Se activa cuando se recibe una solicitud de aplicación. Para una solicitud, es el primer evento que se activa. La solicitud suele ser una solicitud de página (URL) ingresada por el usuario.
· Application_EndRequest: El último evento solicitado por la aplicación.
· Application_PreRequestHandlerExecute: este evento se activa antes de que el marco de la página ASP.NET comience a ejecutar un controlador de eventos, como una página o un servicio web.
· Application_PostRequestHandlerExecute: este evento se activa cuando el marco de la página ASP.NET finaliza la ejecución de un controlador de eventos.
· Applcation_PreSendRequestHeaders: este evento se activa cuando el marco de la página ASP.NET envía encabezados HTTP al cliente solicitante (navegador).
· Application_PreSendContent: este evento se activa cuando el marco de la página ASP.NET envía contenido al cliente solicitante (navegador).
· Application_AcquireRequestState: este evento se activa cuando el marco de la página ASP.NET obtiene el estado actual (estado de sesión) relacionado con la solicitud actual.
· Application_ReleaseRequestState: este evento se activa cuando el marco de la página ASP.NET ha completado la ejecución de todos los controladores de eventos. Esto hará que todos los módulos de estado guarden sus datos de estado actuales.
· Application_ResolveRequestCache: este evento se activa cuando el marco de la página ASP.NET completa una solicitud de autorización. Permite que el módulo de caché atienda solicitudes desde el caché, evitando así la ejecución de controladores de eventos.
· Application_UpdateRequestCache: este evento se activa cuando el marco de la página ASP.NET completa la ejecución del controlador de eventos, lo que permite que el módulo de caché almacene los datos de respuesta para usarlos en responder a solicitudes posteriores.
· Application_AuthenticateRequest: este evento se activa cuando el módulo de seguridad establece una identidad válida para el usuario actual. En este momento, se verificarán las credenciales del usuario.
· Application_AuthorizeRequest: este evento se activa cuando el módulo de seguridad confirma que un usuario puede acceder al recurso.
· Session_Start: este evento se activa cuando un nuevo usuario accede al sitio web de la aplicación.
· Session_End: este evento se activa cuando la sesión de un usuario caduca, finaliza o cuando abandona el sitio web de la aplicación.
Una cuestión clave al utilizar estos eventos es conocer el orden en el que se activan. Los eventos Application_Init y Application_Start se activan una vez cuando se inicia la aplicación por primera vez. De manera similar, los eventos Application_Disposed y Application_End se activan una vez cuando finaliza la aplicación. Además, los eventos basados en sesiones (Session_Start y Session_End) se utilizan solo cuando los usuarios entran y salen del sitio. Los eventos restantes manejan las solicitudes de aplicaciones. El orden en el que se activan estos eventos es:
· Application_BeginRequest
· Application_AuthenticateRequest
· Application_AuthorizeRequest
·
Application_ResolveRequestCache · Application_AcquireRequestState
· Application_PreRequestHandlerExecute
· Application_PreSendRequestHeaders
· Application_PreSendRequestContent
· <<Código de ejecución>>
· Application_PostRequestHandlerExecute
·
Application_ReleaseRequest
. Estado · Application_UpdateRequestCache· Application_EndRequest
estos eventos A menudo se utiliza con fines de seguridad. El siguiente ejemplo de C# demuestra los diferentes eventos Global.asax, utilizando el evento Application_Authenticate para completar la autenticación basada en formularios a través de cookies. Además, el evento Application_Start completa una variable de aplicación y Session_Start completa una variable de sesión. El evento Application_Error muestra un mensaje simple que describe el error ocurrido.
void protegido Application_Start (remitente del objeto, EventArgs e) {
Aplicación["Título"] = "Muestra de Builder.com";
}
void protegido Session_Start (remitente del objeto, EventArgs e) {
Sesión["startValue"] = 0;
}
void protegido Application_AuthenticateRequest (remitente del objeto, EventArgs e) {
//Extrae la cookie de autenticación de formularios
cadena cookieName = FormsAuthentication.FormsCookieName;
HttpCookie authCookie = Context.Request.Cookies[nombredecookie];
if(nulo == authCookie) {
// No hay ninguna cookie de autenticación.
devolver;
}
FormsAuthenticationTicket authTicket = nulo;
intentar {
authTicket = FormsAuthentication.Decrypt(authCookie.Value);
} captura (Excepción ex) {
// Registrar detalles de la excepción (omitidos por simplicidad)
devolver;
}
if (nulo == billete de autenticación) {
// La cookie no pudo descifrarse.
devolver;
}
// Cuando se creó el ticket, se asignó la propiedad UserData
// una cadena delimitada por barras verticales de nombres de funciones.
cadena [2] roles
roles[0] = "Uno"
roles[1] = "Dos"
// Crea un objeto de identidad
ID de FormsIdentity = nueva FormsIdentity (authTicket);
// Este principal fluirá a lo largo de la solicitud.
GenericPrincipal principal = nuevo GenericPrincipal(id, roles);
// Adjunta el nuevo objeto principal al objeto HttpContext actual
Contexto.Usuario = principal;
}
void protegido Application_Error (remitente del objeto, EventArgs e) {
Response.Write("Error encontrado.");
}
http://www.cnblogs.com/niit007/archive/2006/08/13/475565.html