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-ID: 666744

Url: https://administrator.de/forum/iis-workerprozess-programmatisch-beenden-666744.html

Ausgedruckt am: 13.03.2025 um 15:03 Uhr

148121
Lösung 148121 14.05.2021 aktualisiert um 15:38:09 Uhr
Goto Top
HansDampf06
HansDampf06 14.05.2021 um 16:15:12 Uhr
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