137 Stimmen

Wie man eine ASP.NET-Anwendung ohne Ausfallzeiten bereitstellt

Um eine neue Version unserer Website bereitzustellen, gehen wir wie folgt vor:

  1. Zipen Sie den neuen Code und laden Sie ihn auf den Server hoch.
  2. Löschen Sie auf dem Live-Server den gesamten Live-Code aus dem IIS-Website-Verzeichnis.
  3. Entpacken Sie die neue Code-Zipdatei in das nun leere IIS-Verzeichnis

Dieser Vorgang ist skriptgesteuert und geht recht schnell vonstatten, dennoch kann es zu einer Ausfallzeit von 10-20 Sekunden kommen, wenn die alten Dateien gelöscht und die neuen Dateien bereitgestellt werden.

Gibt es Vorschläge für eine Methode mit 0 Sekunden Ausfallzeit?

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?

0voto

Bharat Vasant Punkte 736

Eine Umgehung mit keine Ausfallzeit und ich benutze es regelmäßig:

  1. Umbenennen der laufenden .NET Core-Anwendungs-DLL in Dateiname.dll.backup

  2. Hochladen der neuen .dll (die Webanwendung ist verfügbar und bedient die Anfragen, während die Datei hochgeladen wird)

  3. Sobald der Upload abgeschlossen ist, recyceln Sie den Anwendungspool. Erfordert entweder RDP-Zugang zum Server oder die Funktion zum Recyceln des Applikationspools in Ihrem Hosting-Kontrollpanel.

IIS überlagert den App-Pool beim Recyceln, so dass es in der Regel keine Ausfallzeiten während des Recyclings gibt. Die Anfragen kommen also weiterhin herein, ohne dass jeder weiß, dass der App-Pool recycelt wurde, und die Anfragen werden nahtlos und ohne Ausfallzeit bedient.

Ich bin immer noch auf der Suche nach einer besseren Methode als dieser ! :)

-8voto

mike nelson Punkte 19634

Ich würde vorschlagen, die alten Dateien dort zu belassen und sie einfach zu überschreiben. Auf diese Weise beschränkt sich die Ausfallzeit auf das Überschreiben einzelner Dateien, und es fehlt immer nur eine Datei auf einmal.

Ich bin mir aber nicht sicher, ob dies bei einer "Webanwendung" hilfreich ist (ich glaube, Sie sagen, dass Sie das verwenden), weshalb wir immer "Websites" verwenden. Auch mit "Web-Sites" Bereitstellung nicht neu starten Ihre Website und Drop alle Benutzer-Sitzungen.

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