Wie kann ich die ASP.NET Core App über eine bestehende / laufende Site aktualisieren, ohne den Webserver zu stoppen?

8

Wir haben eine ASP.NET Core-Site auf unserem Testserver, die wir automatisch von XCopy auf unserem IIS-Webserver bereitstellen möchten, so wie wir es bei unseren aktuellen Apps tun, wo die Site bereits läuft. Ich habe ein Veröffentlichungsprofil hinzugefügt, das die Site in ein "publish-local" -Verzeichnis innerhalb der Lösung packt. Immer wenn ich versuche, die vorhandene Site zu kopieren, werden alle DLLs von einem anderen Prozess verwendet, vermutlich von Kestrel, weshalb ich gezwungen bin, in einem gleichgeordneten Verzeichnis zu deployen und IIS neu zuzuordnen, um das Geschwister zu betrachten. Wie aktualisiert man eine laufende ASP.NET Core-Site, ohne manuell eingreifen zu müssen und entweder den Kestrel- oder den IIS-Webserver anzuhalten?

    
flipdoubt 14.12.2016, 16:17
quelle

2 Antworten

3

Wenn Sie mit IIS arbeiten, können Sie eine Datei namens app_offline.htm (Groß- / Kleinschreibung beachten) in Ihren Anwendungsordner legen. IIS wird Ihre Anwendung beenden und den Inhalt der app_offline.html -Datei bereitstellen. Jetzt können Sie Ihre Anwendung kopieren. Sobald Sie fertig sind, entfernen Sie die app_offline.html und IIS startet Ihre App. Dies wird in den Dokumenten und in mein Beitrag zum Ausführen von Asp. NET Core-Anwendungen mit IIS.

    
Pawel 14.12.2016 22:00
quelle
1

Ein kleiner Cheat, den wir benutzen, ist, zuerst die alten Dateien umzubenennen (so etwas wie my.dll.old ) und dann die neuen dlls zu kopieren. Dann können Sie entweder erzwingen oder auf einen App-Pool-Neustart warten.

    
Mike_G 14.12.2016 18:49
quelle