uber reiniciar que pools net manage defaultapppool classic apppool application app aplicaciones and asp.net application-pool

asp.net - reiniciar - iis



¿Cómo bloqueo el Pool de aplicaciones? (4)

Nuestra aplicación web ASP.NET 2 maneja excepciones muy elegantemente. Detectamos excepciones en Global ASAX en Application_Error. Desde allí registramos la excepción y mostramos un mensaje amigable al usuario.

Sin embargo, esta mañana implementamos la última versión de nuestro sitio. Se ejecutó bien durante media hora, pero luego el Pool de aplicaciones se colgó. El sitio no volvió a aparecer hasta que restablecimos la versión anterior.

¿Cómo puedo hacer que el grupo de aplicaciones se bloquee y omita el manejador de excepciones normal? Estoy tratando de replicar este problema, pero sin suerte hasta el momento.

Actualización : encontramos la solución. Una de nuestras páginas fue screencraping en otra página. Pero la URL se configuró de manera incorrecta y la página terminó capturando pantallas infinitamente, causando una excepción de desbordamiento de la pila.


El error más común que he visto y el "bloqueo del grupo" es la llamada de bucle.

public string sMyText { get {return sMyText;} set {sMyText = value;} }

Simplemente llame al sMyText ...


La respuesta de Aristos es buena. También lo he visto hecho con una anulación estúpida en el ciclo de vida de la página cuando alguien cambia el método anulado de OnInit a OnLoad sin cambiar la llamada base, por lo que recursó round in circles a lo largo del ciclo de vida: ie

protected override void OnLoad(EventArgs e) { //some other most likely rubbish code base.OnInit(e); }


Para hacer esto, todo lo que necesita hacer es lanzar cualquier excepción (sin manejarla, por supuesto) desde fuera del contexto de una solicitud .

Por ejemplo, alguna excepción planteada en otro hilo debería hacerlo:

protected void Page_Load(object sender, EventArgs e) { // Create a thread to throw an exception var thread = new Thread(() => { throw new ArgumentException(); }); // Start the thread to throw the exception thread.Start(); // Wait a short while to give the thread time to start and throw Thread.Sleep(50); }

Puede encontrar más información aquí en MS Knowledge Base


Podría intentar lanzar una ThreadAbortException .