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 Recycle
propiedad 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 Changes
propiedad establecida False
ya 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 start
se llama al nuevo evento de proceso de trabajo antes de que el proceso de trabajo anterior haya terminado de cerrarse, entonces el end
evento de proceso de trabajo antiguo nunca se llama: no sucede fuera de secuencia, nunca sucede en absoluto.
Respuestas:
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
( tomado de: /programming/302110/what-causes-an-application-pool-in-iis-to-recycle )
fuente