Ja.
HttpModule sind per HttpApplication. Im Gegensatz zu dem Namensvorschlag wird die Application_End-Methode in global.asax am Ende der Lebensdauer jedes HttpApplicatons NICHT ausgelöst. Es wird am Ende der Lebensdauer aller HttpApplications in der aktuellen AppDomain ausgelöst (wenn die AppDomain abgerissen wird). Dasselbe gilt für die Methode Application_Start.
Es gibt immer nur eine Instanz des Anwendungsobjekts pro Anwendung. Es gibt viele Session-Objekte, die sich jeweils mit Anfragen befassen oder darauf warten, recycelt zu werden.
Der App-Pool wird nicht voll von App-Objekten, da es nur 1 pro Anwendung gibt. Wenn ein App-Pool mehr als eine App hostet, wird es viele geben, und der Pool wird durch das Recyclen des Pools gelöscht. App-Pools verfügen auch über eine Zustandsüberwachung, die den Prozess nach einer bestimmten Anzahl von Anforderungen / Speicherauslastung neu startet. In diesem Fall bleiben bestehende Sitzungen zum Sterben, während eine neue App gestartet wird, um neue Anfragen zu bearbeiten. Wenn alle Sitzungen in der alten App beendet sind, wird die App gelöscht.
Weitere Informationen finden Sie unter MSDN .
Ich habe gerade diesen Beitrag gelesen "Wann ist die IHttpModule.Dispose-Methode gerufen? " Ich fand das
"Die Dispose-Methode führt vor der Entfernung eine abschließende Bereinigung durch des Moduls aus der Ausführungspipeline. "
was bedeuten würde, dass es anwendungsweit ist.
Es ist in Ordnung. Jedenfalls habe ich selbst herausgefunden, dass ich das benutzt habe IHttpModule Dispose-Methode und ein Ereignishandler für die Application.Disposed-Ereignis sollte kaum das gleiche sein. Der erste tritt auf direkt nach dem zweiten.
Ich glaube nicht, dass dies zu 100% korrekt ist, d. h. auf "IHttpModule.Dispose" folgt nicht immer "Application_End". Angenommen, ich habe mehrere Instanzen des Anwendungsobjekts für meine Anwendung ausgeführt, was bedeutet, dass jede Instanz des Anwendungsobjekts einzelne Instanzen von Modulen enthält. Nehmen wir an, es kommt ein Zeitpunkt, an dem der Anwendungspool voll mit Anwendungsinstanzen wird. Was wird dann passieren? Werden die Anwendungsinstanzen nicht einzeln nacheinander verteilt, und in der Kette werden die Module innerhalb der Anwendungsinstanz entsorgt. Jetzt bedeutet diese Entsorgung des Moduls nicht, dass Application_End danach zündet. Die Anwendung läuft noch. Habe ich recht?