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.

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.

<xref:host-and-deploy/azure-apps/azure-continuous-deployment>
Erfahren Sie, wie Sie mit Visual Studio eine ASP.NET Core-Web-App erstellen und sie unter Verwendung von Git für Continuous Deployment in Azure App Service bereitstellen.

Erstellen Sie Ihre erste 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: Aufbau.

Pakete

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

Die Metapakete Microsoft.AspNetCore.App sind nicht in den vorherigen Paketen enthalten. Apps, deren Ziel das .NET Framework ist oder die auf das Microsoft.AspNetCore.App-Metapaket verweisen, müssen explizit auf die einzelnen Pakete in der Projektdatei der App verweisen.

Ü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 unter 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 unter 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.

Referenz zu häufigen Fehlern 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.

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.

Hinzufügen des .NET Core SDK-Schritts

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.

Abgeschlossener SDK-Schritt

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.

Veröffentlichung einer eigenständigen Bereitstellung

Bereitstellen einer eigenständigen Vorschau-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 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 aus.
  5. Wählen Sie Hinzufügen aus.
  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 siteextensions verwenden, um die Websiteerweiterung zu einer Web-App hinzuzufügen. Zum Beispiel:

{
    ...
    "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'))]"
            ]
        }
    ]
}
    

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 in der Visual Studio-Symbolleiste auf Erstellen > {Anwendungsname} veröffentlichen, oder klicken Sie mit der rechten Maustaste auf den Projektmappen-Explorer, und klicken Sie dann auf Veröffentlichen.
  2. Vergewissern Sie sich im Dialogfeld Veröffentlichungsziel auswählen, dass App Service ausgewählt ist.
  3. Wählen Sie Erweitert aus. Das Dialogfeld Veröffentlichen wird geöffnet.
  4. Führen Sie im Dialogfeld Veröffentlichen folgende Schritte aus:
    • Überprüfen Sie, ob die Konfiguration Release ausgewählt ist.
    • Öffnen Sie die Dropdownliste Bereitstellungsmodus, und wählen Sie Frameworkabhängig aus.
    • Wählen Sie Portierbar für Zielruntime aus.
    • Wenn Sie zusätzliche Dateien bei der Bereitstellung entfernen müssen, öffnen Sie Dateiveröffentlichungsoptionen, und aktivieren Sie das Kontrollkästchen, um zusätzliche Dateien am Ziel zu entfernen.
    • Klicken Sie auf Speichern.
  5. Sie können eine neue Website erstellen oder eine vorhandene aktualisieren, indem Sie die folgenden Anweisungen des Veröffentlichungs-Assistenten befolgen.

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 in der Visual Studio-Symbolleiste auf Erstellen > {Anwendungsname} veröffentlichen, oder klicken Sie mit der rechten Maustaste auf den Projektmappen-Explorer, und klicken Sie dann auf Veröffentlichen.
  2. Vergewissern Sie sich im Dialogfeld Veröffentlichungsziel auswählen, dass App Service ausgewählt ist.
  3. Wählen Sie Erweitert aus. Das Dialogfeld Veröffentlichen wird geöffnet.
  4. Führen Sie im Dialogfeld Veröffentlichen folgende Schritte aus:
    • Überprüfen Sie, ob die Konfiguration Release ausgewählt ist.
    • Öffnen Sie die Dropdownliste Bereitstellungsmodus, und wählen Sie Eigenständig aus.
    • Wählen Sie die Zielruntime in der Dropdownliste Zielruntime aus. Der Standardwert ist win-x86.
    • Wenn Sie zusätzliche Dateien bei der Bereitstellung entfernen müssen, öffnen Sie Dateiveröffentlichungsoptionen, und aktivieren Sie das Kontrollkästchen, um zusätzliche Dateien am Ziel zu entfernen.
    • Klicken Sie auf Speichern.
  5. Sie können eine neue Website erstellen oder eine vorhandene aktualisieren, indem Sie die folgenden Anweisungen des Veröffentlichungs-Assistenten befolgen.

Protokolleinstellungen (HTTPS)

Durch sichere Protokollbindungen können Sie ein Zertifikat festlegen, 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). Die folgenden Artikel gehen auf die zugrunde liegende IIS-Technologie ein: