Ich muss wissen, weil ich einige Remote-Ressourcen explizit schließen muss, die an die Sitzung des Benutzers gebunden sind.IIS6: Wenn ein App-Pool wiederverwendet wird, wird Session_End aufgerufen?
Antwort
Ich muss Darin widersprechen. Ich rufe eine Funktion in Session_End auf, um das Ende der Sitzung aufzuzeichnen. Ich habe dies nicht explizit getestet, aber ich habe in meinen Logs die letzten Male nachgesehen, dass der App-Pool wiederverwendet wurde. Die Funktion wurde aufgerufen und das Ende der aktiven Sitzungen protokolliert.
Dies ist sowohl bei der Wiederverwendung des App-Pools nach einem Zeitplan als auch bei der Wiederverwendung der Fall, weil ich einige neue DLLs bereitgestellt habe.
Wenn ich mich richtig erinnere (eine Weile seit ich die Dokumente gelesen habe), wird der normale App-Pool-Recycling-Timer (der ausgelöst wird, wenn die Ressourcen freigegeben werden) verzögert, weil der Server auf aktive Sitzungen setzt anhaltendes Bedürfnis. Sobald die Sitzungen ablaufen (und das Ereignis session_end auslösen), beginnt der App-Recycle-Zeitgeber neu und zählt rückwärts, bevor der Thread-Pool seine eigenen Ressourcen freigibt und die App beendet.
Das ist unter normalen Umständen, es sollte beachtet werden, dass das session_end -Ereignis ist nicht garantiert zu feuern (dort zu sehr spezifische Szenarien, wo es nicht wäre), denke ich jetzt ist dies meist mit abgestürzten Instanzen von IIS oder verwandt Der App-Pool wird für OOM oder Fehler wiederverwendet. Es ist zu verwenden, es sei denn, Sie verwenden nur einen der Sitzungstypen (Zustandsserver, glaube ich) würde es nicht zuverlässig auslösen. Das kann jetzt anders sein.
Wenn Sie sicherstellen müssen, dass Ressourcen freigegeben werden, bin ich nicht sicher, dass session_end der geeignete Ort dafür ist. Können Sie es auf den App Cache oder HTTP Cache erhöhen und Sitzungsschlüssel mit periodischen Bereinigungsereignissen verwenden? Das könnte zuverlässiger (mehr Code) aber zuverlässiger sein.
Es ist meine allgemeine Erfahrung, dass session_end ziemlich zuverlässig feuert, aber ich habe gesehen, dass es unter erheblicher Last (100s von Hits pro Sekunde) scheitert und ich weiß, wenn Sie anfangen über Serverfarmen zu reden, wird es auch sehr viel komplizierter.
Ich spreche nur über 20-30 Benutzer max, aber die Kosten für das Verlassen der Verbindung ist sehr hoch und ich traue nicht den Remote-Server, um es zu schließen. –
Beachten Sie auch, dass Session_End nur aufgerufen wird, wenn Sie den Inproc-Sitzungsmodus verwenden. Für andere Modi (einschließlich SQL-Sitzungsstatusmodus) wird dieses Ereignis nie ausgelöst.
- 1. Wann wird Session_End() in ASP.NET MVC aufgerufen?
- 2. Wird Rowid wiederverwendet?
- 3. Welche Methode wird aufgerufen, wenn ein QGraphicsItem ausgewählt wird
- 4. locationManager: didEnterRegion wird nicht aufgerufen, wenn ein Beacon erkannt wird
- 5. Response.Cookies wird zurückgesetzt, wenn RedirectToAction aufgerufen wird
- 6. Wird save() implizit aufgerufen, wenn create in django aufgerufen wird?
- 7. Was wird ausgedruckt, wenn dolookup aufgerufen wird?
- 8. ViewPager wird nicht immer aktualisiert, wenn setAdapter aufgerufen wird, FragmentStatePagerAdapter
- 9. Wie wird eine Box wiederverwendet?
- 10. Session_End Alternativen
- 11. Wenn Konstruktor aufgerufen wird und wenn Operatorfunktion
- 12. Was bewirkt, dass ein Anwendungspool in IIS wiederverwendet wird?
- 13. Befehl wird nicht aufgerufen, wenn MenuItem geklickt wird
- 14. Swift: Funktion wird aufgerufen, wenn Back gedrückt wird
- 15. Wie WPF DataGridTemplateColumn (einschließlich Bindung) wiederverwendet wird
- 16. textFieldShouldBeginEditing wird mehrfach aufgerufen, wenn die "Tab" -Taste gedrückt wird
- 17. Wann wird ajaxError aufgerufen, wenn $ .ajax verwendet wird?
- 18. Welcher Thread wird aufgerufen, wenn eine Android-Anwendung gestartet wird?
- 19. ngChange wird aufgerufen, wenn das Modell programmgesteuert geändert wird
- 20. onOptionsItemSelected wird nicht aufgerufen, wenn actionLayout (SherlockActionBar) verwendet wird
- 21. Wie wird ein Criteria-Objekt mit Hibernate wiederverwendet?
- 22. Welche Funktion wird aufgerufen, wenn die iPhone App beendet wird?
- 23. onDeviceReady() wird nicht aufgerufen, wenn die Seite neu geladen wird?
- 24. ResizeEvent wird unbestimmt genannt, wenn fitInView aufgerufen wird (QGraphicsScene)
- 25. onRestoreInstanceState() wird nicht aufgerufen, wenn es erwartet wird
- 26. Warum wird meine Funktion aufgerufen, wenn sie nicht benötigt wird?
- 27. Array wird nicht angezeigt, wenn sie aufgerufen wird?
- 28. onSubmitEditing wird zweimal aufgerufen, wenn die Tastatur geschlossen wird
- 29. Native reagieren - Wenn "componentWillUnmount" aufgerufen wird?
- 30. Paket wird nicht importiert, wenn Python-Skript remote aufgerufen wird
Einverstanden, nur getestet und es gefeuert :-) –