IIS 7.5: deshabilitar la propiedad de reciclaje superpuesto que no se obedece cuando se actualiza web.config

25

Tengo un sitio que tiene un bloqueo exclusivo en algunos recursos. Utilicé los eventos .NET Application_Start y Application_End para adquirir y liberar el bloqueo de estos recursos en el momento adecuado. Para que esto funcione correctamente, solo puede haber una instancia de mi aplicación ejecutándose en un momento dado.

Para que esto suceda, configuré la Disable Overlapped Recyclepropiedad en el grupo de aplicaciones en True. Se supone que esta propiedad garantiza que el antiguo proceso de trabajo se cierre por completo antes de que se inicie uno nuevo cada vez que se recicla el grupo de aplicaciones. Esto funciona bien cuando el grupo de aplicaciones se recicla manualmente a través de IIS, automáticamente como resultado del tiempo de inactividad alcanzado o automáticamente de acuerdo con las reglas específicas de intervalo de tiempo / tiempo.

Sin embargo, cuando se actualiza web.config para el sitio, esta regla no se aplica: se inicia un nuevo proceso de trabajo antes de que el anterior termine de cerrarse. Esto hace que sucedan cosas malas. Tengo la Disable Recycling for Configuration Changespropiedad establecida Falseya que quiero que el grupo de aplicaciones se recicle cuando se actualiza web.config; esto ocurre con frecuencia durante el desarrollo.

¿Es esto algo que se espera o es un error en IIS? ¿Es mi única opción configurar para que cambiar web.config no recicle el grupo de aplicaciones? Prefiero no hacer esto, ya que estoy bastante seguro de que causará muchos dolores de cabeza cuando las personas cambien la configuración y luego olviden reciclar el grupo de aplicaciones.

Actualizar:

Para ser más claros, cuando startse llama al nuevo evento de proceso de trabajo antes de que el proceso de trabajo anterior haya terminado de cerrarse, entonces el endevento de proceso de trabajo antiguo nunca se llama: no sucede fuera de secuencia, nunca sucede en absoluto.

John
fuente
¿Cuánto tiempo después de que se actualiza web.config antes de que se inicie el nuevo proceso de trabajo?
Greg Askew
El nuevo proceso de trabajo comienza tan pronto como trato de acceder al sitio después de un reciclaje, así que menos de un segundo si soy rápido. Si se deja, el evento de "cierre" del proceso de trabajo antiguo se lleva a cabo 20-30 segundos después del reciclaje.
John
Tengo el mismo problema. Hay superposición
Andrew Rimmer,
11
La edición del archivo web.config hace que se vuelva a cargar appDomain. El dominio de aplicación está separado del grupo de aplicaciones. No debería ver una nueva identificación de proceso W3WP simplemente cambiando la web.config. Vea aquí treeloop.com/blog/iis-application-domain-and-pool-recycling
kheld
1
@kheld tiene toda la razón (quizás agregue esto como respuesta) esto no es una superposición de appool, es una superposición de dominio de aplicación. No creo que pueda detener esto, pero puede deshabilitar el reciclaje del dominio de la aplicación en el cambio.
Sam Cogan

Respuestas:

1

De esta publicación de MSDN: https://blogs.msdn.microsoft.com/tess/2006/08/02/asp-net-case-study-lost-session-variables-and-appdomain-recycles/

Entonces, como parte de su proceso de implementación de código, parece que su grupo se reciclará cuando implemente cualquiera de estos cambios:

Reciclaje inmediato

  • Web.config cambios
  • Machine.config cambios
  • Cambios globales.asax
  • Cambios en el directorio bin
  • Cambios de App_Code

( tomado de: /programming/302110/what-causes-an-application-pool-in-iis-to-recycle )

Matt McDonald
fuente