Hosten und Bereitstellen von ASP.NET Core

Um eine ASP.NET Core-App in einer Hostingumgebung bereitzustellen, müssen Sie allgemein folgende Schritte durchführen:

  • Stellen Sie die veröffentlichte App in einem Ordner auf dem Hostserver bereit.
  • Richten Sie einen Prozess-Manager ein, der die App startet, wenn Anforderungen eingehen und die App nach einem Absturz oder Serverneustart neu startet.
  • Richten Sie zur Konfiguration eines Reverseproxys einen Reverseproxy ein, der Anforderungen an die App weiterleitet.

Veröffentlichen in einem Ordner

Der Befehl dotnet publish kompiliert App-Code und kopiert die Dateien, die zum Ausführen der App erforderlich sind, in den Ordner publish. Bei der Bereitstellung von Visual Studio erfolgt der dotnet publish-Schritt automatisch, bevor die Dateien in das Bereitstellungsziel kopiert werden.

Dateien mit Veröffentlichungseinstellungen

*.json-Dateien werden standardmäßig veröffentlicht. Um andere Einstellungsdateien zu veröffentlichen, geben Sie sie in einem <ItemGroup><Content Include= ... />-Element in der Projektdatei an. Im folgenden Beispiel werden XML-Dateien veröffentlicht:

<ItemGroup>
  <Content Include="**\*.xml" Exclude="bin\**\*;obj\**\*"
    CopyToOutputDirectory="PreserveNewest" />
</ItemGroup>

Ordnerinhalte

Der Ordner publish enthält mindestens eine App-Assemblydatei, Abhängigkeiten und optional die .NET-Runtime.

Eine .NET Core-App kann als eigenständige Bereitstellung oder als Framework-abhängige Bereitstellung veröffentlicht werden. Wenn die App eigenständig ist, sind die Assemblydateien, die die .NET-Runtime enthalten, im Ordner publish enthalten. Wenn die App frameworkabhängig ist, sind die Dateien für die .NET-Runtime nicht enthalten, da die App über einen Verweis auf eine auf dem Server installierte .NET-Version verfügt. Das Standardmodell für die Bereitstellung ist Framework-abhängig. Weitere Informationen finden Sie unter .NET Core application deployment (.NET Core-Anwendungsbereitstellung).

Zusätzlich zu den EXE- und DLL-Dateien enthält der Ordner publish für eine ASP.NET Core-App üblicherweise noch Konfigurationsdateien, statische Objekte und MVC-Ansichten. Weitere Informationen finden Sie unter Verzeichnisstruktur für ASP.NET Core.

Einrichten eines Prozessmanagers

Bei einer ASP.NET Core-App handelt es sich um eine Konsolen-App, die gestartet werden muss, wenn ein Server startet und nach Abstürzen neu startet. Sie benötigen einen Prozess-Manager, um die Starts und Neustarts zu automatisieren. Die gängigsten Prozess-Manager für ASP.NET Core sind Folgende:

Einrichten eines Reverseproxys

Wenn die App den Kestrel-Server verwendet, können Nginx, Apache oder IIS als Reverseproxyserver verwendet werden. Ein Reverseproxyserver empfängt HTTP-Anforderungen aus dem Internet und leitet diese an Kestrel weiter.

Jede der beiden Konfigurationen —mit oder ohne einen Reverseproxyserver— ist eine unterstützte Hostingkonfiguration. Weitere Informationen finden Sie unter Verwenden von Kestrel mit einem Reverseproxy.

Jede der beiden Konfigurationen —mit oder ohne einen Reverseproxyserver— ist eine unterstützte Hostingkonfiguration. Weitere Informationen finden Sie unter Verwenden von Kestrel mit einem Reverseproxy.

Proxyserver und Lastenausgleichsszenarien

Möglicherweise ist zusätzliche Konfiguration für Apps erforderlich, die hinter Proxyservern und Lastenausgleichsmodulen (Load Balancer) gehostet werden. Ohne zusätzliche Konfiguration hat eine App möglicherweise keinen Zugriff auf das Schema (HTTP/HTTPS) und die Remote-IP-Adresse, von der eine Anforderung stammte. Weitere Informationen hierzu feinden Sie unter Konfigurieren von ASP.NET Core zur Verwendung mit Proxyservern und Lastenausgleich.

Verwenden von Visual Studio und MSBuild zum Automatisieren der Bereitstellungen

Die Bereitstellung erfordert neben dem Kopieren der Ausgabe von dotnet publish auf einen Server oft zusätzliche Aufgaben. Beispielsweise können zusätzliche Dateien aus dem Ordner publish erforderlich oder ausgeschlossen sein. Visual Studio verwendet MSBuild für die Webbereitstellung, und MSBuild kann für die Ausführung vieler weiterer Tasks während der Bereitstellung angepasst werden. Weitere Informationen finden Sie unter Visual Studio-Veröffentlichungsprofile (PUBXML) für die Bereitstellung von ASP.NET Core-Apps und im Buch Using MSBuild and Team Foundation Build (Verwenden von MSBuild und Team Foundation Build).

Mithilfe des Webfeatures Veröffentlichen können Apps direkt über Visual Studio in Azure App Service bereitgestellt werden. Azure DevOps Services unterstützt Continuous Deployment in Azure App Service. Weitere Informationen finden Sie unter DevOps für ASP.NET Core-Entwickler.

Veröffentlichen in Azure

Anleitungen zum Veröffentlichen einer App in Azure mithilfe von Visual Studio finden Sie unter Veröffentlichen einer ASP.NET Core-App in Azure mit Visual Studio. Ein weiteres Beispiel wird unter Erstellen von ASP.NET Core-Web-Apps in Azure bereitgestellt.

Veröffentlichen mit MSDeploy unter Windows

Anleitungen zum Veröffentlichen einer App mit einem Visual Studio-Veröffentlichungsprofil z.B. von einer Windows-Eingabeaufforderung mit dem Befehl dotnet msbuild finden Sie unter Visual Studio-Veröffentlichungsprofile (PUBXML) für die Bereitstellung von ASP.NET Core-Apps.

IIS (Internet Information Services)

Informationen zu Bereitstellungen zu Internetinformationsdiensten (IIS) mit von der web.config-Datei bereitgestellter Konfiguration, finden Sie in den Artikeln unter Hosten von ASP.NET Core unter Windows mit IIS.

Hosten in einer Webfarm

Weitere Informationen zur Konfiguration des Hostings von ASP.NET Core-Apps in einer Webfarmumgebung (z.B. Bereitstellen mehrerer App-Instanzen zur besseren Skalierbarkeit) finden Sie unter Hosten von ASP.NET Core in einer Webfarm.

Hosten auf Docker

Weitere Informationen finden Sie unter Hosten von ASP.NET Core in Docker-Containern.

Ausführen von Integritätsprüfungen

Verwenden Sie Middleware für die Integritätsprüfung, um Integritätsprüfungen für eine App und deren Abhängigkeiten auszuführen. Weitere Informationen finden Sie unter Integritätsprüfungen in ASP.NET Core.

Zusätzliche Ressourcen

Um eine ASP.NET Core-App in einer Hostingumgebung bereitzustellen, müssen Sie allgemein folgende Schritte durchführen:

  • Stellen Sie die veröffentlichte App in einem Ordner auf dem Hostserver bereit.
  • Richten Sie einen Prozess-Manager ein, der die App startet, wenn Anforderungen eingehen und die App nach einem Absturz oder Serverneustart neu startet.
  • Richten Sie zur Konfiguration eines Reverseproxys einen Reverseproxy ein, der Anforderungen an die App weiterleitet.

Veröffentlichen in einem Ordner

Der Befehl dotnet publish kompiliert App-Code und kopiert die Dateien, die zum Ausführen der App erforderlich sind, in den Ordner publish. Bei der Bereitstellung von Visual Studio erfolgt der dotnet publish-Schritt automatisch, bevor die Dateien in das Bereitstellungsziel kopiert werden.

Ordnerinhalte

Der Ordner publish enthält mindestens eine App-Assemblydatei, Abhängigkeiten und optional die .NET-Runtime.

Eine .NET Core-App kann als eigenständige Bereitstellung oder als Framework-abhängige Bereitstellung veröffentlicht werden. Wenn die App eigenständig ist, sind die Assemblydateien, die die .NET-Runtime enthalten, im Ordner publish enthalten. Wenn die App frameworkabhängig ist, sind die Dateien für die .NET-Runtime nicht enthalten, da die App über einen Verweis auf eine auf dem Server installierte .NET-Version verfügt. Das Standardmodell für die Bereitstellung ist Framework-abhängig. Weitere Informationen finden Sie unter .NET Core application deployment (.NET Core-Anwendungsbereitstellung).

Zusätzlich zu den EXE- und DLL-Dateien enthält der Ordner publish für eine ASP.NET Core-App üblicherweise noch Konfigurationsdateien, statische Objekte und MVC-Ansichten. Weitere Informationen finden Sie unter Verzeichnisstruktur für ASP.NET Core.

Einrichten eines Prozessmanagers

Bei einer ASP.NET Core-App handelt es sich um eine Konsolen-App, die gestartet werden muss, wenn ein Server startet und nach Abstürzen neu startet. Sie benötigen einen Prozess-Manager, um die Starts und Neustarts zu automatisieren. Die gängigsten Prozess-Manager für ASP.NET Core sind Folgende:

Einrichten eines Reverseproxys

Wenn die App den Kestrel-Server verwendet, können Nginx, Apache oder IIS als Reverseproxyserver verwendet werden. Ein Reverseproxyserver empfängt HTTP-Anforderungen aus dem Internet und leitet diese an Kestrel weiter.

Jede der beiden Konfigurationen —mit oder ohne einen Reverseproxyserver— ist eine unterstützte Hostingkonfiguration. Weitere Informationen finden Sie unter Verwenden von Kestrel mit einem Reverseproxy.

Proxyserver und Lastenausgleichsszenarien

Möglicherweise ist zusätzliche Konfiguration für Apps erforderlich, die hinter Proxyservern und Lastenausgleichsmodulen (Load Balancer) gehostet werden. Ohne zusätzliche Konfiguration hat eine App möglicherweise keinen Zugriff auf das Schema (HTTP/HTTPS) und die Remote-IP-Adresse, von der eine Anforderung stammte. Weitere Informationen hierzu feinden Sie unter Konfigurieren von ASP.NET Core zur Verwendung mit Proxyservern und Lastenausgleich.

Verwenden von Visual Studio und MSBuild zum Automatisieren der Bereitstellungen

Die Bereitstellung erfordert neben dem Kopieren der Ausgabe von dotnet publish auf einen Server oft zusätzliche Aufgaben. Beispielsweise können zusätzliche Dateien aus dem Ordner publish erforderlich oder ausgeschlossen sein. Visual Studio verwendet MSBuild für die Webbereitstellung, und MSBuild kann für die Ausführung vieler weiterer Tasks während der Bereitstellung angepasst werden. Weitere Informationen finden Sie unter Visual Studio-Veröffentlichungsprofile (PUBXML) für die Bereitstellung von ASP.NET Core-Apps und im Buch Using MSBuild and Team Foundation Build (Verwenden von MSBuild und Team Foundation Build).

Mithilfe des Webfeatures Veröffentlichen können Apps direkt über Visual Studio in Azure App Service bereitgestellt werden. Azure DevOps Services unterstützt Continuous Deployment in Azure App Service. Weitere Informationen finden Sie unter DevOps für ASP.NET Core-Entwickler.

Veröffentlichen in Azure

Anleitungen zum Veröffentlichen einer App in Azure mithilfe von Visual Studio finden Sie unter Veröffentlichen einer ASP.NET Core-App in Azure mit Visual Studio. Ein weiteres Beispiel wird unter Erstellen von ASP.NET Core-Web-Apps in Azure bereitgestellt.

Veröffentlichen mit MSDeploy unter Windows

Anleitungen zum Veröffentlichen einer App mit einem Visual Studio-Veröffentlichungsprofil z.B. von einer Windows-Eingabeaufforderung mit dem Befehl dotnet msbuild finden Sie unter Visual Studio-Veröffentlichungsprofile (PUBXML) für die Bereitstellung von ASP.NET Core-Apps.

IIS (Internet Information Services)

Informationen zu Bereitstellungen zu Internetinformationsdiensten (IIS) mit von der web.config-Datei bereitgestellter Konfiguration, finden Sie in den Artikeln unter Hosten von ASP.NET Core unter Windows mit IIS.

Hosten in einer Webfarm

Weitere Informationen zur Konfiguration des Hostings von ASP.NET Core-Apps in einer Webfarmumgebung (z.B. Bereitstellen mehrerer App-Instanzen zur besseren Skalierbarkeit) finden Sie unter Hosten von ASP.NET Core in einer Webfarm.

Hosten auf Docker

Weitere Informationen finden Sie unter Hosten von ASP.NET Core in Docker-Containern.

Zusätzliche Ressourcen