Mit der Klasse ServerManager von Microsoft.Web.Administration können Sie Ihren eigenen Verteilungsagenten entwickeln.
Der Trick besteht darin, den PhysicalPath des VirtualDirectory zu ändern, was zu einem atomaren Online-Wechsel zwischen alten und neuen Webanwendungen führt.
Beachten Sie, dass dies dazu führen kann, dass alte und neue AppDomains parallel ausgeführt werden!
Das Problem besteht darin, wie Änderungen an Datenbanken usw. synchronisiert werden können.
Durch die Abfrage nach dem Vorhandensein von AppDomains mit alten oder neuen PhysicalPaths kann festgestellt werden, wann die alte(n) AppDomain(s) beendet und die neue(n) AppDomain(s) gestartet wurden.
Um den Start einer AppDomain zu erzwingen, müssen Sie eine HTTP-Anfrage stellen (IIS 7.5 unterstützt die Autostart-Funktion)
Jetzt brauchen Sie eine Möglichkeit, Anfragen für die neue AppDomain zu blockieren. Ich verwende eine benannte Mutex, die vom Deployment Agent erstellt und verwaltet wird, auf die der Application_Start der neuen Web-App wartet und die dann vom Deployment Agent freigegeben wird, sobald die Datenbankaktualisierungen durchgeführt wurden.
(Ich verwende eine Markierungsdatei in der Webanwendung, um das Mutex-Warteverhalten zu aktivieren) Sobald die neue Webanwendung ausgeführt wird, lösche ich die Markierungsdatei.
0 Stimmen
Sollte das nicht auf ServerFault stehen?
53 Stimmen
Vielleicht, aber ServerFault gab es im September '08 noch nicht.
3 Stimmen
Kann IIS auf einen Symlink-Ordner verweisen? Wird das Ändern des Symlinks dazu führen, dass der IIS-Prozess recycelt wird?
0 Stimmen
Gibt es eine endgültige Lösung mit vollständigem Quellcode-Skriptbeispiel?
0 Stimmen
Ist es nicht möglich, mehrere App-Pools zu haben und den Datenverkehr von einem App-Pool auf einen anderen umzuschalten?