tag route page net for development asp asp.net httpapplication

asp.net - route - ¿Por qué se llama varias veces al constructor HttpApplication?



select asp-for asp-items (2)

¿Alguien puede explicar por qué el constructor de una clase personalizada derivada de HttpApplication se llama varias veces al iniciar la aplicación?

Mi estructura de código es la siguiente:
- Mi clase Global en global.asax deriva de la clase CustomApp .
- La clase CustomApp deriva de la clase HttpApplication

La clase Global se crea al inicio, pero cuando coloco un punto de interrupción en el constructor, ¡se invoca varias veces! ¿Pensé que debería haber solo una instancia de la clase de aplicación creada?

¿Me equivoco?

UPD : el servidor web puede crear varias instancias de HttpApplication para procesar múltiples solicitudes que llegan al mismo tiempo. Esto se hace especialmente evidente cuando coloca un punto de interrupción en el constructor de su descendiente HttpApplication . Varias solicitudes estarán pendientes del cliente (contenido http, archivos CSS, etc.) y para atender a cada una de ellas, el servidor web creará nuevas instancias de HttpApp. Por lo tanto, tenga cuidado con esto, al escribir la lógica de inicialización de la aplicación.


Creo que el tiempo de ejecución de ASP.NET puede crear más de una aplicación HttpApplication por dominio de aplicación. Por lo tanto, se puede llamar a HttpApplication.Init y al Ctor más de una vez.

Si desea tener un código de inicialización que solo se ejecute una vez, debe usar el evento Application_Start, que solo se llamará una vez por aplicación.


Por favor, eche un vistazo a una publicación global.asax en ASP.NET : explica por qué hay varias instancias de HttpApplication. Básicamente hay dos piscinas: especial y normal. El grupo normal contiene instancias de HttpApplication que son utilizadas por las solicitudes (cada solicitud tiene su propia instancia de HttpApplication). El grupo especial contiene objetos HttpApplication utilizados para eventos de nivel de aplicación (como Application_Start, Application_Error).