2009-03-17 8 views
5

Me pregunto si hay una forma de troceo automático en los controladores de eventos de Global.asax. Hasta ahora, no he podido encontrar ningún ejemplo de cómo hacer esto. Parece que tengo que encontrar la lista de nombres de delegados disponibles y escribirlos manualmente.Cableado automático de eventos en Global.asax

Intellisense no parece prestar ninguna información útil sobre el tema tampoco.

Respuesta

7

El tiempo de ejecución de ASP.Net usa la reflexión para buscar dinámicamente métodos con nombres como "Application_Start", "Session_Start" etc. y luego los vincula a los eventos correspondientes en la clase HttpApplication. Puede vincularse efectivamente a cualquiera de los eventos de HttpApplication simplemente incluyendo un método en Global.asax.cs cuyo nombre es "Application_" seguido del nombre del evento. Por ejemplo, para utilizar el evento EndRequest añadir esto a su archivo Global.asax.cs:

protected void Application_EndRequest(object sender, EventArgs e) 
    { 
     // Your code here 
    } 

ver este Blog Entry de Rick Strahl para un montón de información útil sobre cómo se hace esto.

+0

Honestamente, todos mis conceptos de OOPS se volcaron cuando vi que los métodos se llamaban sin anular la palabra clave. La reflexión es el jinete fantasma aquí :-). Gracias por esta gran iluminación. Simplemente ultra-cool. Pero me pregunto si la gente generalmente dice que inspeccionar los tipos a través de la reflexión es lento y puede ser un éxito de rendimiento aquí. Además, el equipo de asp.net eligió esta ruta para crear una instancia de HttpApplication y enganchar los manejadores de eventos en lugar de una forma de anulación virtual más obvia. Esto es algo que quiero investigar ahora. – RBT

0

No entiendo muy bien a qué te refieres con "resguardo automático" de los controladores de eventos? ¿Te gusta escribir la "anulación" y obtener Intellisense para decir qué controladores de eventos están disponibles? Temo que no es allí ...

Aquí hay un enlace que muestra lo que es portarlo, sin embargo:

Parece que no puede encontrar ninguna lista definitiva, completa en cualquier lugar, sin embargo: - (

Marc

+0

Derecha ... como en la anulación, o en la pestaña Propiedades, normalmente se puede seleccionar el botón de evento para ver y auto-conectar a los delegados al evento haciendo doble clic. Algo así o una opción intellisense. Hay listas en todas partes que describen qué métodos se pueden conectar. Gracias sin embargo. – Boydski

2

Todos los eventos de la clase HttpApplication puede tener un manejador en el mundial. asax.

0

HttpApplication.Init método se llama después de que se hayan creado todos los objetos del módulo y cada uno de sus métodos Init se haya invocado, lo que presenta la oportunidad perfecta para configurar controladores de eventos, inicializar las variables de instancia de HttpModule y manejadores de eventos de conexión al servidor HttpApplication.

nombre del método en asax La clase es la concatenación del valor del atributo de nombre utilizado para registrar el módulo en el archivo Web.config, un guión bajo, y el nombre del evento.

Cuestiones relacionadas