2 Stimmen

Application_End wird nicht im Azure-Emulator oder in der Cloud aufgerufen.

Die Application_End-Methode der ASP.NET-Web-App wird nicht aufgerufen, wenn ein Deployment gelöscht wird oder wenn die tatsächliche Produktions-Webrolle neu gestartet wird.

Ich muss Bereinigungsvorgänge durchführen (wie das Löschen von dynamischen Service Bus-Abonnements), wenn die Anwendung entladen wird.

Irgendwelche Ideen?

0voto

Sandrino Di Mattia Punkte 24599

Ich weiß nicht, warum Application_End nicht auf Ihrem Webrolle aufgerufen wird (oder nicht aufgerufen aussieht), aber Sie sollten Application_End verwenden, um Ihre Instanz aufzuräumen. Dies könnte bedeuten, dass Ihr Code an mehreren Anlässen ausgeführt wird (zum Beispiel bei jedem Neustart), obwohl dies nicht notwendig ist.

Aufräumoperationen sollten im WebRole.cs in der OnStop-Methode durchgeführt werden. Beachten Sie jedoch, dass Sie nur eine begrenzte Zeit für Ihre Aufräumoperationen haben.

0voto

Mike Asdf Punkte 2229

Ich bin auf das gleiche Problem gestoßen und habe einen weniger idealen Workaround eingerichtet, inspiriert von diesem Thread.

Rufen Sie im OnStop-Handler des WebRoles dies auf, um alle Anwendungspools auf dem Rollen-VM neu zu starten:

var p = Process.Start("cmd.exe", Environment.ExpandEnvironmentVariables(@"/C %windir%\system32\inetsrv\appcmd list apppool /xml | %windir%\system32\inetsrv\appcmd.exe recycle apppool /in"));
p.WaitForExit();

(Sie müssen sicherstellen, dass Ihr Web Role mit erhöhten Berechtigungen ausgeführt wird, indem Sie zur csdef-Datei direkt unter dem WebRole-Node hinzufügen)

Hinweis: Stellen Sie sicher, dass Ihr Shutdown-Code sowohl mit Rollen-Neustarts als auch mit Skalierungsvorgängen getestet wird; Ich habe festgestellt, dass Dinge wie Datenbankverbindungen während Skalierungsvorgängen möglicherweise nicht funktionieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X