hansdampf06
Goto Top

IIS-Workerprozess programmatisch beenden

Hallochen Gemeinde.

im IIS-Management kann für einen ApplicationPool ein Zeit für die Wiederverwendung konfiguriert werden. Wird dieses Ereignis ausgelöst, läuft der (jeweilige) Workerprozess alle abzufangenden End-Ereignisse durch. Das ist wichtig, um Prozessdaten abschließend speichern zu können. Gleichsam verhält es sich, wenn im bin-Verzeichnis der Webapplikation etwas geändert wird. So weit, so gut!

Außerhalb dieser beiden Ereignisse, unter anderem wenn im IIS-Management der ApplicationPool manuell beendet wird, dann werden nicht alle abzufangenden End-Ereignisse durchlaufen beziehungsweise die zugehörigen Ereignisprozeduren werden während der Ausführung abgebrochen.

Einmal deshalb und auch im Rahmen der Fehlerbehandlung soll es möglich sein, so wie in den oben genannten ersten zwei Fällen eine Beendigung des Workerprozesses derart auszulösen, dass alle abzufangenden End-Ereignisse und die zugehörigen Ereignisprozeduren vollständig durchlaufen werden. Bei meiner bisherigen Recherche zu möglichen Lösungsansätzen habe ich noch nichts greifbares gefunden, insbesondere keine taugliche Objektmethode oder ein Ereignis, das über RaiseEvent initialisiert werden könnte.

Die denkbare Methode System.AppDomain.Unload() mit System.AppDomain.CurrentDomain als Parameter ist wirkungslos.

Kennt jemand einen tauglichen Lösungsansatz?

Vielen Dank im Voraus und viele Grüße
HansDampf06

Content-Key: 666744

Url: https://administrator.de/contentid/666744

Printed on: May 7, 2024 at 22:05 o'clock

Mitglied: 148121
Solution 148121 May 14, 2021 updated at 13:38:09 (UTC)
Goto Top
Member: HansDampf06
HansDampf06 May 14, 2021 at 14:15:12 (UTC)
Goto Top
Besten Dank! Dieser Lösungsansatz erscheint besonders interessant, wenn nicht nur der aktuelle Workerprozess beendet werden soll. Da gibt mir sofort neue Ideen, die über die aktuelle Frage hinausgehen. Klasse!

Ich habe daneben selbst weiter nach einer Lösung gesucht und bin dabei vorhin auf

System.Web.HttpRuntime.UnloadAppDomain()

gestoßen. Getestet habe ich es schon und es löst in der Tat die Beendigung des Workerprozesses so aus, dass die abzufangenden End-Ereignisse alle ordentlich durchlaufen werden.

Viele Grüße
HansDampf06