2011-05-03 15 views
15

... ¿se ejecutará de nuevo el método Application_Start para la (s) próxima (s) solicitud (es) o no?¿Qué sucede si se lanza una excepción no controlada en Application_Start?

¿Depende de la versión de ASP.NET, la versión del servidor de alojamiento y/u otro contexto?

Estoy tratando de determinar si es bueno cargar ensamblajes críticos allí o no. Por ejemplo, conjuntos de acceso a datos que son vitales para el funcionamiento de la aplicación completa o no. Si no se carga dicho ensamblaje, las solicitudes posteriores serán inútiles.

+0

Usted maneja el error - cargo todos los ensamblados críticos al inicio, pero también los reviso nuevamente en otros puntos críticos que están cargados, en caso de que no se carguen en el inicio – Aristos

Respuesta

9

Application_Start se disparará solo una vez por cada aplicación web, por lo que en su caso, el inicio no volverá a suceder para las solicitudes posteriores.

Por lo general, prefiero poner un código de inicio de una vez en el inicio de la aplicación dentro de try-catch y si hay una excepción, configure el indicador de error global. En cada BeginRequest, se marca la bandera y, si está configurada, se redirige al usuario a una página de error personalizada que indica que el sitio está caído y contáctese con el administrador.

+0

"configure el indicador de error global" - ¿Qué es la bandera de error global? – Alex

+1

@Alex, es una variable booleana estática privada simple en global.asax que se establece en 'application_start' en caso de error. En 'BeginRequest', se verifica el indicador para ver si hubo un error durante el inicio de la aplicación y, en caso afirmativo, se redirige a la página de error. – VinayC

+0

Ah, ahora lo entiendo. Pensé que usabas una compilación en la bandera de ASP.NET. ¡Gracias! – Alex

Cuestiones relacionadas