IIS ya lo hace, de eso se trata el reciclaje. Está cargando el archivo DLL mientras la versión anterior de la aplicación aún se está ejecutando. solo después de que esto se complete, el reciclaje se completa.
Sin embargo carga de la DLL es sólo una parte de conseguir que las aplicaciones web listas, también puede haber cargas iniciales como de carga/almacenamiento en caché del usuario db etc.
Estas acciones no son parte del proceso de reciclaje, que sucedan después de que todas las DLL se hayan recargado y el reciclaje ya se haya completado.
Hace un tiempo me encontré con este problema con una aplicación que tenía un gran tiempo de inicio debido a la gran actividad de db/almacenamiento en caché durante el inicio. Entonces, me interesó si hay alguna funcionalidad que nos permita ejecutar código antes de que el reciclado se marque como completado, de modo que la aplicación se considere primero reciclada cuando todo esté listo para ejecutarse. Básicamente lo que quería es algún tipo de funcionalidad de puesta en escena.
Estuve en contacto con el equipo de IIS con respecto a este problema, lamentablemente me dijeron que no existe tal funcionalidad, ni está previsto.
para resolver este podría intentar hacer lo siguiente:
- Uso alterna despliega:
a configurar 2 sitios web con los grupos de aplicaciones independientes. Uno de ellos es el sitio web EN VIVO, el otro es el sitio web ESCENARIO. Si desea implementar cambios, simplemente implemente en el sitio web STAGED. Después de que todo se carga/almacena en caché, cambia la configuración de la URL de las aplicaciones web para redirigir las solicitudes entrantes de EN VIVO a ESCAPADAS. Entonces el LIVE se convierte en el nuevo STAGED y al revés. El siguiente despliegue iría al nuevo STAGED nuevamente, y así sucesivamente.
ACTUALIZACIÓN
Al parecer, han creado un módulo de IIS que proporciona esta funcionalidad a estas alturas:
Inventario de Aplicación de Calentamiento Módulo para IIS 7.5
El equipo IIS ha lanzado la primera versión de prueba beta del Módulo de calentamiento de aplicación para IIS 7.5. Esto hace que el calentamiento de sus aplicaciones sea aún más fácil de lo que se describió anteriormente. En lugar de escribir código personalizado, especifique las URL de recursos para ejecutar antes de que la aplicación web acepte solicitudes de la red.Este calentamiento ocurre durante el inicio del servicio IIS (si configuró el grupo de aplicaciones IIS como AlwaysRunning) y cuando un proceso de trabajo IIS se recicla. Durante el reciclaje, el antiguo proceso de trabajo de IIS continúa a ejecutar solicitudes hasta que el proceso de trabajo recién generado esté completamente calentado, de modo que las aplicaciones no experimenten interrupciones u otros problemas debido a cachés no imprimados. Tenga en cuenta que este módulo funciona con cualquier versión de ASP.NET, comenzando con la versión 2.0.
Para obtener más información, consulte Calentamiento de aplicaciones en el sitio web de IIS.net. Para ver un tutorial que ilustra cómo usar la función de calentamiento, consulte Primeros pasos con el módulo de calentamiento de aplicación IIS 7.5 en el sitio web de IIS.net .
Ver:
http://www.asp.net/whitepapers/aspnet4
Si utiliza ASP.NET 4 función Auto Start:
Todavía se puede optar por auto-reciclar los procesos de trabajo de time to time. Sin embargo, cuando lo haga, la aplicación se reiniciará inmediatamente y se ejecutará su código de calentamiento (a diferencia de lo que ocurre hoy, donde debe esperar para la próxima solicitud de tareas pendientes).
La principal diferencia entre el calentamiento y la función de inicio automático es que el módulo de calentamiento es parte del proceso de reciclaje. En lugar de bloquear la solicitud de solicitudes, mientras ejecuta el código de inicio.
Lo único que obtiene al usar la función de inicio automático es que no tiene que esperar que un usuario acceda a la página, lo que no ayuda a su caso.
Ver el blog de la Gu:
http://weblogs.asp.net/scottgu/archive/2009/09/15/auto-start-asp-net-applications-vs-2010-and-net-4-0-series.aspx
ACTUALIZACIÓN 2:
Por desgracia, el módulo de calentamiento ha sido descontinuado para IIS 7/7.5:
http://forums.iis.net/t/1176740.aspx
Será parte de IIS8 aunque (Ahora se llama módulo de inicialización de la aplicación):
http://weblogs.asp.net/owscott/archive/2012/03/01/what-s-new-in-iis-8.aspx
Actualización 3:
Como se señaló en los comentarios el módulo Warmup resurgió para IIS 7.5 como Módulo de inicialización de aplicaciones para IIS 7.5 después de que IIS 8 fue lanzado:
http://www.iis.net/downloads/microsoft/application-initialization
Muchas gracias por sus comentarios, supongo que tengo que mover mi caché y precarga acciones a un modo fuera de proceso donde puedo descargar algo del trabajo de inicio de la aplicación e implementar el "inicio automático" de una d finalmente esperar a IIS8 :) – sam360
El módulo Warmup todavía existe para IIS 7.5 como _Application Initialization Module para IIS 7.5_: http://www.iis.net/downloads/microsoft/application-initialization – NicolasF