Necesito saberlo porque tengo que cerrar explícitamente algunos recursos remotos que están vinculados a la sesión del usuario.IIS6: cuando se recicla un grupo de aplicaciones, ¿se llama a Session_End?
Respuesta
Debo estar en desacuerdo con Darin. Llamo a una función en Session_End para registrar el final de la sesión. No he probado esto explícitamente, pero busqué en mis registros las últimas veces que el grupo de aplicaciones se recicló. Se llamó a la función y se registró el final de las sesiones activas.
Esto ocurrió tanto cuando el grupo de aplicaciones se recicló en un horario como cuando se recicló porque implementé algunos dlls nuevos.
Si recuerdo correctamente (hace un tiempo que no leo los documentos) tener sesiones activas retrasará el temporizador normal de reciclaje del grupo de aplicaciones (que se dispara cuando se liberen los recursos) porque el servidor deposita en sesiones activas lo que significa que hay necesidad continuada Una vez que las sesiones caducan (y desencadena el evento session_end), el temporizador de reciclaje de aplicaciones comienza de nuevo y realiza una cuenta regresiva, y finalmente se activa antes de que el grupo de subprocesos libere sus propios recursos y finalice la aplicación.
Eso es en circunstancias normales, debe tenerse en cuenta que el evento session_end no está garantizado para disparar (hay escenarios muy específicos donde no sería así), creo que ahora esto está relacionado principalmente con las instancias bloqueadas de IIS o App Pool se recicla para OOM o errores. Solía ser, a menos que estuvieras usando solo uno de los tipos de sesión (creo que el servidor de estado) no se activará de manera confiable. Esto puede ser diferente ahora.
Si necesita garantizar que se liberen los recursos, no estoy seguro de que session_end sea el lugar adecuado para hacerlo. ¿Puedes elevarlo a la caché de la aplicación o al caché de HTTP y usar claves únicas de sesión con eventos de limpieza periódicos? Eso podría ser más confiable (más código) pero más confiable.
Mi experiencia general es que session_end se dispara bastante confiablemente, pero lo he visto fallar bajo una carga sustancial (100s de hits por segundo) y sé que cuando empiezas a hablar de granjas de servidores, se vuelve mucho más complicado también.
Solo estoy hablando de 20-30 usuarios como máximo, pero el costo de dejar la conexión abierta es muy alto y no confío en que el servidor remoto lo cierre. –
Tenga en cuenta también que Session_End solo se invoca si utiliza el modo de sesión Inproc. Para otros modos (incluido el modo de estado de sesión SQL) este evento nunca se plantea.
- 1. Grupo de aplicaciones IIS 7.0 que recicla cada minuto
- 2. ¿Cuál es la mejor manera de forzar el inicio de una aplicación cuando se recicla un grupo de aplicaciones?
- 3. Session_End no se activa?
- 4. cuando se llama a onSizeChanged()?
- 5. Detectando cuando una aplicación ASP.NET recicla
- 6. ¿Se llama a onCreate cuando se crea un objeto Activity?
- 7. Cuando se llama __repr __()?
- 8. onRestoreInstanceState() no se llama cuando se espera
- 9. Response.Cookies se restablece cuando se llama a RedirectToAction
- 10. HttpsURLConnection se estanca cuando getInputStream() se llama
- 11. ¿Solo se llama a applicationWillResignActive cuando el iPhone se apaga?
- 12. MPMoviePlayerPlaybackDidFinishNotification se llama cuando no
- 13. Cómo encontrar Pool de aplicaciones recicla en registro de eventos
- 14. ¿Cómo configurar el grupo de aplicaciones en IIS 7.5 se reinicia automáticamente cuando se detuvo?
- 15. ¿Puede configurar IIS7 para iniciar automáticamente una aplicación del Servicio de Activación de Proceso de Windows (WAS) cuando se inicia/recicla el grupo de aplicaciones?
- 16. ¿Qué ocurre con el restablecimiento de un grupo de aplicaciones?
- 17. ¿Qué determina qué se escribe en un puntero de C++ cuando se llama a delete?
- 18. ¿Cuándo se llama a finalize en singletons cuando se lanza un cargador de clases?
- 19. ¿Cómo se llama cuando cambia un valor de UISlider?
- 20. cuando se llama al evento "DOMNodeInserted"?
- 21. VLC muriendo cuando se llama desde Java
- 22. Cuando transactionManager no se llama "transactionManager"
- 23. ¿Cuándo se llama a ServiceConnection.onServiceDisconnected()?
- 24. ¿Qué sucede cuando se agota un grupo de conexiones?
- 25. ¿Cuándo se llama a viewDidLoad?
- 26. Cuando getView() en ArrayAdapter se llama
- 27. problema en Firefox cuando se llama a window.open
- 28. método no se llama cuando se utiliza yield return
- 29. taquigrafía cuando se llama a métodos genéricos en C#
- 30. cómo desbloquear la pantalla cuando se llama a BroadcastReceiver?
De acuerdo, acabo de probar y disparó :-) –