Bereitstellen von ASP.NET Core-Apps in Azure App Service

Azure App Service ist ein Microsoft Cloud Computing-Plattformdienst zum Hosten von Web-Apps. Dazu gehört auch ASP.NET Core.

Zuverlässige Web-App-Muster

Eine Anleitung zum Erstellen einer modernen, zuverlässigen, leistungsfähigen, testbaren, kosteneffizienten und skalierbaren ASP.NET Core-App finden Sie in den YouTube-Videos und im Artikel zur zuverlässigen Web App für .NET – ganz gleich, ob Sie eine App von Grund auf neu erstellen oder umgestalten möchten.

Nützliche Ressourcen

In der App Service-Dokumentation finden Sie die Azure-Apps-Dokumentation, Tutorials, Beispiele und Leitfäden sowie andere Ressourcen. Dies sind zwei erwähnenswerte Tutorials, die auf das Hosten von ASP.NET Core-Apps eingehen:

Erstellen einer ASP.NET Core-Web-App in Azure
Verwenden Sie Visual Studio, um ASP.NET Core-Web-Apps zu erstellen und in Azure App Service unter Windows bereitzustellen.

Erstellen einer .NET Core-App in App Service für Linux
Verwenden Sie die Befehlszeile, um ASP.NET Core-Web-Apps zu erstellen und in Azure App Service unter Linux bereitzustellen.

Die ASP.NET Core-Version, die unter Azure App Service verfügbar ist, finden Sie unter ASP.NET Core im App Service-Dashboard.

Abonnieren Sie das Repository für App Service-Ankündigungen, und überwachen Sie die Issues. Das App Service-Team postet regelmäßig Ankündigungen und neue Szenarien in App Service.

Die folgenden Artikel sind in der ASP.NET Core-Dokumentation verfügbar:

Veröffentlichen einer ASP.NET Core-App in Azure mit Visual Studio
Erfahren Sie, wie eine ASP.NET Core-App in Azure App Service mit Visual Studio veröffentlicht wird.

Erstellen Ihrer ersten Pipeline
Richten Sie ein CI-Build für eine ASP.NET Core-App ein, und erstellen Sie dann ein Continuous Deployment-Release für Azure App Service.

Azure Web App-Sandbox
Entdecken Sie die Einschränkungen der Azure App Service-Laufzeitausführung, die durch die Azure Apps-Plattform erzwungen werden.

Problembehandlung und Debuggen von ASP.NET Core-Projekten
In diesem Artikel werden Warnungen und Fehler erläutert. Außerdem erfahren Sie, wie die Problembehandlung in ASP.NET Core-Projekten funktioniert.

Anwendungskonfiguration

Plattform

Die Plattformarchitektur (x86/x64) einer App Services-App wird in den Einstellungen der App im Azure-Portal festgelegt. Dies gilt für Apps, die in einem A-Series-Computetarif (Basic) oder einem höheren Hostingtarif gehostet werden. Überprüfen Sie, ob die Veröffentlichungseinstellungen der App (z. B im Veröffentlichungsprofil (PUBXML) von Visual Studio) mit der Einstellung in der Dienstkonfiguration der App im Azure-Portal übereinstimmen.

In Azure App Service sind Runtimes für 64-Bit- und 32-Bit-Apps (x64 und x86) vorhanden. Das .NET Core SDK, das in Azure App Service zur Verfügung steht, ist eine 32-Bit-Version. Sie können jedoch auch lokal erstellte 64-Bit-Apps mit der Kudu-Konsole oder dem Veröffentlichungsprozess in Visual Studio bereitstellen. Weitere Informationen finden Sie im Abschnitt Publish and deploy the app (Veröffentlichen und Bereitstellen der App).

Für Apps mit nativen Abhängigkeiten stehen in Azure App Service Runtimes für 32-Bit- und 32-Bit-Apps (x86 und x86) zur Verfügung. Das .NET Core SDK in Azure App Service ist eine 32-Bit-Version.

Weitere Informationen zu .NET Core-Frameworkkomponenten und Verteilungsmethoden (z. B. .NET Core-Runtime und .NET Core SDK) finden Sie unter Weitere Informationen zu .NET Core: Komposition.

Packages

Beziehen Sie die folgenden NuGet-Pakete ein, die automatische Protokollierungsfeatures für Apps bieten, die für Azure App Service bereitgestellt werden:

Auf die vorherigen Pakete muss in der Projektdatei der App explizit verwiesen werden.

Überschreiben der App-Konfiguration im Azure-Portal

Über die App-Einstellungen im Azure-Portal können Sie Umgebungsvariablen für die App festlegen. Umgebungsvariablen können von Umgebungsvariablen-Konfigurationsanbietern verarbeitet werden.

Wenn eine App-Einstellung im Azure-Portal erstellt oder geändert und die Schaltfläche Speichern ausgewählt wird, wird die Azure-App neu gestartet. Die Umgebungsvariable steht der App nach dem Neustart des Diensts zur Verfügung.

Wenn eine App einen generischen Host verwendet, werden beim Abruf von CreateDefaultBuilder zum Erstellen des Hosts Umgebungsvariablen in die Konfiguration der App geladen. Weitere Informationen finden Sie unter Generischer .NET-Host in ASP.NET Core und Umgebungsvariablen-Konfigurationsanbieter.

Über die App-Einstellungen im Azure-Portal können Sie Umgebungsvariablen für die App festlegen. Umgebungsvariablen können von Umgebungsvariablen-Konfigurationsanbietern verarbeitet werden.

Wenn eine App-Einstellung im Azure-Portal erstellt oder geändert und die Schaltfläche Speichern ausgewählt wird, wird die Azure-App neu gestartet. Die Umgebungsvariable steht der App nach dem Neustart des Diensts zur Verfügung.

Wenn eine App einen Webhost verwendet, werden beim Abruf von CreateDefaultBuilder zum Erstellen des Hosts Umgebungsvariablen in die Konfiguration der App geladen. Weitere Informationen finden Sie unter ASP.NET Core-Webhost und Umgebungsvariablen-Konfigurationsanbieter.

Proxyserver und Lastenausgleichsszenarien

Die Middleware für die Integration von IIS, die beim Out-of-Process-Hosting die Middleware für weitergeleitete Header konfiguriert, und das ASP.NET Core-Modul sind so konfiguriert, dass sie das Schema (HTTP/HTTPS) und die Remote-IP-Adresse an die Stelle weiterleiten, von der die Anforderung stammte. Möglicherweise ist zusätzliche Konfiguration für Apps erforderlich, die hinter weiteren Proxyservern und Lastenausgleichsmodulen (Load Balancer) gehostet werden. Weitere Informationen hierzu feinden Sie unter Konfigurieren von ASP.NET Core zur Verwendung mit Proxyservern und Lastenausgleich.

Überwachung und Protokollierung

In App Service bereitgestellte ASP.NET Core-Apps erhalten automatisch die App Service-Erweiterung ASP.NET Core Logging Integration (ASP.NET Core-Protokollierungsintegration). Durch diese Erweiterung ist die Protokollierungsintegration für ASP.NET Core-Apps in Azure App Service möglich.

In App Service bereitgestellte ASP.NET Core-Apps erhalten automatisch die App Service-Erweiterung ASP.NET Core-Protokollierungserweiterungen. Durch diese Erweiterung ist die Protokollierungsintegration für ASP.NET Core-Apps in Azure App Service möglich.

In den folgenden Artikeln finden Sie Informationen zum Überwachen, Protokollieren und zur Problembehandlung:

Überwachen von Apps in Azure App Service
Erfahren Sie, wie Sie Kontingente und Metrik für Apps und App Service-Pläne prüfen.

Aktivieren der Diagnoseprotokollierung für Apps in Azure App Service
Erfahren Sie, wie Sie die Diagnosesprotokollierung für HTTP-Statuscodes, fehlgeschlagene Anforderungen und Webserveraktivitäten aktivieren und auf die Protokolle zugreifen.

Fehlerbehandlung in ASP.NET Core
Lernen Sie gängige Methoden zur Fehlerbehandlung in ASP.NET Core-Apps kennen.

Problembehandlung bei ASP.NET Core in Azure App Service und IIS
Erfahren Sie, wie Sie Probleme mit Azure App Service-Bereitstellungen mit ASP.NET Core-Apps diagnostizieren können.

Problembehandlung für häufige Fehler bei Azure App Service und IIS mit ASP.NET Core
Sehen Sie sich häufig auftretende Fehler und entsprechende Hinweise zur Fehlerbehebung bei der Bereitstellungskonfiguration für von Azure App Service/IIS gehosteten Apps an.

Data Protection-Schlüsselbund und -Bereitstellungsslots

Data Protection-Schlüssel werden im Ordner %HOME%\ASP.NET\DataProtection-Keys gespeichert. Dieser Ordner wird von einem Netzwerkspeicher unterstützt und mit allen Computern, auf denen die App gehostet wird, synchronisiert. Ruhende Schlüssel werden nicht geschützt. Dieser Ordner stellt den Schlüsselbund für alle Instanzen einer App in einem einzelnen Bereitstellungsslot bereit. Separate Bereitstellungsslots, wie Staging und Produktion, verwenden keinen gemeinsamen Schlüsselbund.

Wenn Sie zwischen Bereitstellungsslots wechseln, können Systeme, die Data Protection verwenden, gespeicherte Daten nicht mit dem Schlüsselbund des vorherigen Slots entschlüsseln. ASP.NET-Cookiemiddleware verwendet Data Protection zum Schutz ihrer cookies. Dadurch werden Benutzer aus einer App abgemeldet, die gewöhnliche ASP.NET-Cookiemiddleware verwendet. Verwende Sie einen externen Schlüsselbundanbieter für eine slotunabhängige Schlüsselbundlösung wie z.B.:

  • Azure Blob Storage
  • Azure Key Vault
  • SQL-Speicher
  • Redis Cache

Weitere Informationen finden Sie unter Schlüsselspeicheranbieter in ASP.NET Core.

Bereitstellen einer ASP.NET Core-App, die eine Vorschauversion von .NET Core verwendet

In den folgenden Ressourcen finden Sie Informationen zum Bereitstellen einer App, die eine Vorschauversion von .NET Core verwendet. Diese Verfahren werden auch verwendet, wenn die Runtime verfügbar ist, aber das SDK nicht in Azure App Service installiert wurde.

Die ASP.NET Core-Version, die unter Azure App Service verfügbar ist, finden Sie unter ASP.NET Core im App Service-Dashboard.

Informationen zum Auswählen der Version des .NET SDK für eigenständige Bereitstellungen finden Sie unter Auswählen der zu verwendenden .NET Core-Version.

Angeben der .NET Core SDK-Version mithilfe von Azure Pipelines

Verwenden Sie die Szenarien zum Entwerfen einer CI/CD-Pipeline mithilfe von Azure DevOps, um einen Continuous Integration-Build mit Azure DevOps einzurichten. Nach dem Erstellen des Azure DevOps-Builds können Sie diesen optional für die Verwendung einer bestimmten SDK-Version konfigurieren.

Angeben der .NET Core SDK-Version

Wenn Sie das App Service-Bereitstellungscenter zum Erstellen eines Azure DevOps-Builds verwenden, enthält die Standardbuildpipeline die Schritte für Restore, Build, Test und Publish. Zum Angeben der SDK-Version klicken Sie auf die Schaltfläche Hinzufügen (+) in der Liste mit Agent-Aufträgen, um einen neuen Schritt hinzuzufügen. Suchen Sie in der Suchleiste nach .NET Core SDK.

Add the .NET Core SDK step

Verschieben Sie den Schritt an die erste Stelle im Build, sodass die nachfolgenden Schritte die angegebene Version des .NET Core SDK verwenden. Geben Sie die Version des .NET Core SDK an. In diesem Beispiel ist das SDK auf 3.0.100 festgelegt.

Completed SDK step

Um eine eigenständige Bereitstellung (Self-Contained Deployment, SCD) zu veröffentlichen, konfigurieren Sie SCD im Schritt Publish, und geben Sie den Runtimebezeichner (Runtime Identifier, RID) an.

Self-contained publish

Bereitstellen einer eigenständigen Vorschauversions-App

Eine eigenständige Bereitstellung, die auf eine Vorschauruntime abzielt, enthält die Vorschauruntime in der Bereitstellung.

Wenn Sie eine eigenständige App bereitstellen, gilt Folgendes:

Befolgen Sie die Anweisungen im Abschnitt Bereitstellen einer eigenständigen Vorschau-App.

Verwenden von Docker mit Web-Apps für Container

Der Docker Hub unter https://hub.docker.com/_/microsoft-dotnet enthält die aktuellen Images für die Docker-Vorschauversion. Die Images können als Basisimage verwendet werden. Verwenden Sie das Image, und führen Sie wie gewohnt eine Bereitstellung für Web-Apps für Container durch.

Installieren der Websiteerweiterung (Vorschau)

Sollte ein Problem mit dem Verwenden der Vorschau der Websiteerweiterung auftreten, öffnen Sie ein dotnet/AspNetCore-Issue.

  1. Navigieren Sie im Azure-Portal zu „App Service“.
  2. Wählen Sie die Web-App aus.
  3. Geben Sie „ex“ in das Suchfeld ein, um nach „Extensions“ (Erweiterungen) zu filtern, oder durchsuchen Sie die Liste der Verwaltungstools.
  4. Wählen Sie Erweiterungen.
  5. Klicken Sie auf Hinzufügen.
  6. Wählen Sie die Erweiterung ASP.NET Core {X.Y} ({x64|x86}) Runtime aus der Liste aus. Dabei ist {X.Y} die ASP.NET Core-Vorschauversion, und {x64|x86} gibt die Plattform an.
  7. Klicken Sie auf OK, um die rechtlichen Bedingungen zu akzeptieren.
  8. Wählen Sie OK aus, um die Erweiterung zu installieren.

Nach Abschluss dieses Vorgangs wird die neueste .NET Core-Vorschauversion installiert. Überprüfen Sie die Installation:

  1. Wählen Sie Erweiterte Tools aus.

  2. Wählen Sie Go unter Erweiterte Tools aus.

  3. Wählen Sie das Menüelement Debugkonsole>PowerShell aus.

  4. Führen Sie in der PowerShell-Eingabeaufforderung den folgenden Befehl aus. Ersetzen Sie im Befehl die ASP.NET Core-Runtimeversion durch {X.Y} und die Plattform durch {PLATFORM}:

    Test-Path D:\home\SiteExtensions\AspNetCoreRuntime.{X.Y}.{PLATFORM}\
    

    Der Befehl gibt True zurück, wenn die x64-Vorschauruntime installiert ist.

Hinweis

Die Plattformarchitektur (x86/x64) einer App Services-App wird in den Einstellungen der App im Azure-Portal festgelegt. Dies gilt für Apps, die in einem A-Series-Computetarif (Basic) oder einem höheren Hostingtarif gehostet werden. Überprüfen Sie, ob die Veröffentlichungseinstellungen der App (z. B im Veröffentlichungsprofil (PUBXML) von Visual Studio) mit der Einstellung in der Dienstkonfiguration der App im Azure-Portal übereinstimmen.

Wenn die Anwendung im In-Process-Modus ausgeführt wird und die Plattformarchitektur für 64-Bit (x64) konfiguriert ist, verwendet das ASP.NET Core-Modul die 64-Bit-Vorschauruntime, falls vorhanden. Installieren Sie die Erweiterung ASP.NET Core {X.Y} (x64) Runtime über das Azure-Portal.

Nach der Installation der x64-Vorschauruntime führen Sie den folgenden Befehl im Azure Kudu PowerShell-Befehlsfenster aus, um die Installation zu überprüfen. Ersetzen Sie im folgenden Befehl die ASP.NET Core-Runtimeversion für {X.Y}:

Test-Path D:\home\SiteExtensions\AspNetCoreRuntime.{X.Y}.x64\

Der Befehl gibt True zurück, wenn die x64-Vorschauruntime installiert ist.

Hinweis

ASP.NET Core-Erweiterungen aktivieren zusätzliche Funktionen für ASP.NET Core in Azure App Services, z.B. Azure-Protokollierung. Die Erweiterung wird automatisch installiert, wenn die Bereitstellung aus Visual Studio erfolgt. Wenn die Erweiterung nicht installiert ist, installieren Sie sie für die App.

Verwenden der Vorschau-Websiteerweiterung mit einer ARM-Vorlage

Wenn Sie eine ARM-Vorlage zum Erstellen und Bereitstellen von Anwendungen verwenden, können Sie den Ressourcentyp Microsoft.Web/sites/siteextensions verwenden, um die Websiteerweiterung zu einer Web-App hinzuzufügen. Im folgenden Beispiel wird der App die Websiteerweiterung (AspNetCoreRuntime.5.0.x64) der ASP.NET Core 5.0 (x64)-Runtime hinzugefügt:

{
    ...
    "parameters": {
        "site_name": {
            "defaultValue": "{SITE NAME}",
            "type": "String"
        },
        ...
    },       
    ...
    "resources": [
        ...
        {
            "type": "Microsoft.Web/sites/siteextensions",
            "apiVersion": "2018-11-01",
            "name": "[concat(parameters('site_name'), '/AspNetCoreRuntime.5.0.x64')]",
            "location": "[resourceGroup().location]",
            "dependsOn": [
                "[resourceId('Microsoft.Web/sites', parameters('site_name'))]"
            ]
        }
    ]
}
    

Verwenden Sie für den Platzhalter {SITE NAME} den Namen der App im Azure App Service (z. B. contoso).

Veröffentlichen und Bereitstellen der App

Für eine 64-Bit-Bereitstellung:

  • Verwenden Sie ein .NET Core SDK mit 64 Bit, um eine 64-Bit-App zu erstellen.
  • Legen Sie die Plattform in App Service unter Konfiguration>Allgemeine Einstellungen auf 64 Bit fest. Die App muss den Serviceplan „Basic“ oder höher verwenden, damit die Bitanzahl der Plattform festgelegt werden kann.

Frameworkabhängige Bereitstellung einer App

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt, und wählen Sie Veröffentlichen aus. Wählen Sie alternativ auf der Visual Studio-Symbolleiste Erstellen>{Anwendungsname} veröffentlichen aus.
  2. Wählen Sie im Dialogfeld Veröffentlichen nacheinander Azure>Weiter aus.
  3. Wählen Sie den Azure-Dienst aus.
  4. Wählen Sie Erweitertaus. Das Dialogfeld Veröffentlichen wird geöffnet.
  5. Wählen Sie eine Ressourcengruppe und einen Hostingplan aus, oder erstellen Sie neue.
  6. Klicken Sie auf Fertig stellen.
  7. Gehen Sie auf der Seite Veröffentlichen so vor:
    • Wählen Sie für Konfigurationdas Stiftsymbol für Konfiguration bearbeiten aus:
      • Überprüfen Sie, ob die Konfiguration Release ausgewählt ist.
      • Wählen Sie in der Dropdownliste Bereitstellungsmodus den Eintrag Frameworkabhängig aus.
      • Wählen Sie in der Dropdownliste Zielruntime die gewünschte Runtime aus. Der Standardwert ist win-x86.
    • Um zusätzliche Dateien bei der Bereitstellung zu entfernen, öffnen Sie Dateiveröffentlichungsoptionen, und aktivieren Sie das Kontrollkästchen, um zusätzliche Dateien am Ziel zu entfernen.
    • Wählen Sie Speichern aus.
    • Wählen Sie Veröffentlichen aus.

Bereitstellen der App als eigenständige App

Nutzen Sie Visual Studio oder die .NET Core-CLI für eine eigenständige Bereitstellung (Self-Contained Deployment, SCD).

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt, und wählen Sie Veröffentlichen aus. Wählen Sie alternativ auf der Visual Studio-Symbolleiste Erstellen>{Anwendungsname} veröffentlichen aus.
  2. Wählen Sie im Dialogfeld Veröffentlichen nacheinander Azure>Weiter aus.
  3. Wählen Sie den Azure-Dienst aus.
  4. Wählen Sie Erweitertaus. Das Dialogfeld Veröffentlichen wird geöffnet.
  5. Wählen Sie eine Ressourcengruppe und einen Hostingplan aus, oder erstellen Sie neue.
  6. Klicken Sie auf Fertig stellen.
  7. Gehen Sie auf der Seite Veröffentlichen so vor:
    • Wählen Sie für Konfigurationdas Stiftsymbol für Konfiguration bearbeiten aus:
      • Überprüfen Sie, ob die Konfiguration Release ausgewählt ist.
      • Wählen Sie in der Dropdownliste Bereitstellungsmodus den Eintrag Eigenständig aus.
      • Wählen Sie in der Dropdownliste Zielruntime die gewünschte Runtime aus. Der Standardwert ist win-x86.
    • Um zusätzliche Dateien bei der Bereitstellung zu entfernen, öffnen Sie Dateiveröffentlichungsoptionen, und aktivieren Sie das Kontrollkästchen, um zusätzliche Dateien am Ziel zu entfernen.
    • Wählen Sie Speichern aus.
    • Wählen Sie Veröffentlichen aus.

Protokolleinstellungen (HTTPS)

Durch sichere Protokollbindungen können Sie ein Zertifikat angeben, das verwendet werden soll, wenn über HTTPS auf Anforderungen geantwortet wird. Bindungen erfordern gültige private Zertifikate (.pfx), die für den angegebenen Hostnamen ausgestellt wurden. Weitere Informationen finden Sie unter Tutorial: Binden eines vorhandenen benutzerdefinierten SSL-Zertifikats an Azure App Service.

Transformieren von web.config

Wenn Sie web.config beim Veröffentlichen transformieren müssen (z.B. Umgebungsvariablen basierend auf der Konfiguration, dem Profil oder der Umgebung festlegen müssen), finden Sie weitere Informationen unter Transformieren von web.config.

Zusätzliche Ressourcen

Azure App Service auf Windows Server verwendet Internetinformationsdienste (IIS). Kestrel und YARP am Front-End stellen den Lastenausgleich bereit. Die folgenden Artikel gehen auf die zugrunde liegende IIS-Technologie ein: