Delen via


ASP.NET Core-apps implementeren in Azure App Service

Notitie

Dit is niet de nieuwste versie van dit artikel. Zie de .NET 9-versie van dit artikelvoor de huidige release.

Waarschuwing

Deze versie van ASP.NET Core wordt niet meer ondersteund. Zie de .NET- en .NET Core-ondersteuningsbeleidvoor meer informatie. Zie de .NET 9-versie van dit artikelvoor de huidige release.

Belangrijk

Deze informatie heeft betrekking op een pre-releaseproduct dat aanzienlijk kan worden gewijzigd voordat het commercieel wordt uitgebracht. Microsoft geeft geen garanties, uitdrukkelijk of impliciet, met betrekking tot de informatie die hier wordt verstrekt.

Zie de .NET 9-versie van dit artikelvoor de huidige release.

Azure App Service- is een microsoft-cloudcomputingplatformservice voor het hosten van web-apps, waaronder ASP.NET Core.

Patronen voor bedrijfsweb-apps

Zie Enterprise-web-app-patronenvoor hulp bij het maken van een betrouwbare, veilige, uitvoerbare, testbare en schaalbare ASP.NET Core-app. Er is een volledige voorbeeldweb-app van productiekwaliteit beschikbaar waarmee de patronen worden geïmplementeerd.

Nuttige bronnen

De documentatie van App Service is de startpagina voor documentatie over Azure Apps, handleidingen, voorbeelden, instructiegidsen en andere middelen. Twee belangrijke tutorials die betrekking hebben op het hosten van ASP.NET Core-apps zijn:

Een ASP.NET Core-web-app maken in Azure
Visual Studio gebruiken om een ASP.NET Core-web-app te maken en te implementeren in Azure App Service in Windows.

Een ASP.NET Core-app maken in App Service op Linux
Gebruik de opdrachtregel om een ASP.NET Core-web-app te maken en te implementeren in Azure App Service op Linux.

Zie de ASP.NET Core op het App Service-dashboard voor de versie van ASP.NET Core die beschikbaar is in Azure App Service.

Abonneer u op de App Service-aankondigingen opslagplaats en controleer de problemen. Het App Service-team plaatst regelmatig aankondigingen en scenario's die binnenkomen in App Service.

De volgende artikelen zijn beschikbaar in ASP.NET Core-documentatie:

Een ASP.NET Core-app publiceren naar Azure met Visual Studio
Meer informatie over het publiceren van een ASP.NET Core-app naar Azure App Service met behulp van Visual Studio.

Uw eerste pijplijn maken
Stel een CI-build in voor een ASP.NET Core-app en maak vervolgens een continue implementatierelease voor Azure App Service.

Azure Web App sandbox
Ontdek de uitvoeringsbeperkingen voor Azure App Service-runtime die worden afgedwongen door het Azure Apps-platform.

Problemen met ASP.NET Core-projecten oplossen en fouten opsporen
Waarschuwingen en fouten met ASP.NET Core-projecten begrijpen en oplossen.

Toepassingsconfiguratie

Perron

De platformarchitectuur (x86/x64) van een App Services-app wordt ingesteld in de instellingen van de app in Azure Portal voor apps die worden gehost op een A-serie compute (Basic) of een hogere hostinglaag. Controleer of de publicatie-instellingen van de app (bijvoorbeeld in visual Studio publicatieprofiel (.pubxml)) overeenkomen met de instelling in de serviceconfiguratie van de app in azure Portal.

ASP.NET Core-apps kunnen worden gepubliceerd frameworkafhankelijke omdat de runtimes voor 64-bits (x64) en 32-bits (x86)-apps aanwezig zijn in Azure App Service. De .NET Core SDK beschikbaar in App Service is 32-bits, maar u kunt 64-bits apps implementeren die lokaal zijn gebouwd met behulp van de Kudu-console of het publicatieproces in Visual Studio. Zie de sectie De app publiceren en implementeren voor meer informatie.

Voor apps met systeemeigen afhankelijkheden zijn runtimes voor 32-bits apps (x86) aanwezig in Azure App Service. De .NET Core SDK beschikbaar op App Service is 32-bit.

Zie voor meer informatie over .NET Core Framework-onderdelen en -distributiemethoden, zoals informatie over de .NET Core-runtime en de .NET Core SDK, Over .NET Core: Samenstelling.

Pakketten

Neem de volgende NuGet-pakketten op om automatische logboekregistratiefuncties te bieden voor apps die zijn geïmplementeerd in Azure App Service:

In het projectbestand van de app moet expliciet naar de voorgaande pakketten worden verwezen.

App-configuratie overschrijven met behulp van De Azure-portal

Met app-instellingen in Azure Portal kunt u omgevingsvariabelen instellen voor de app. Omgevingsvariabelen kunnen worden gebruikt door de Configuratieprovider voor omgevingsvariabelen.

Wanneer een app-instelling wordt gemaakt of gewijzigd in Azure Portal en de knop Opslaan is geselecteerd, wordt de Azure-app opnieuw gestart. De omgevingsvariabele is beschikbaar voor de app nadat de service opnieuw is opgestart.

Omgevingsvariabelen worden geladen in de configuratie van de app wanneer CreateBuilder- wordt aangeroepen om de host te bouwen. Voor meer informatie, zie de configuratieprovider voor omgevingsvariabelen.

Met app-instellingen in Azure Portal kunt u omgevingsvariabelen instellen voor de app. Omgevingsvariabelen kunnen worden gebruikt door de Configuratieprovider voor omgevingsvariabelen.

Wanneer een app-instelling wordt gemaakt of gewijzigd in Azure Portal en de knop Opslaan is geselecteerd, wordt de Azure-app opnieuw gestart. De omgevingsvariabele is beschikbaar voor de app nadat de service opnieuw is opgestart.

Wanneer een app gebruikmaakt van de -webhost, worden omgevingsvariabelen in de configuratie van de app geladen wanneer CreateDefaultBuilder wordt aangeroepen om de host te bouwen. Zie ASP.NET Core Web Host en de Environment Variables Configuration Providervoor meer informatie.

Scenario's voor proxyserver en load balancer

De IIS Integration Middleware, waarmee Forward Headers Middleware wordt geconfigureerd bij het hosten van out-of-process, en de ASP.NET Core Module zijn geconfigureerd voor het doorsturen van het schema (HTTP/HTTPS) en het externe IP-adres waar de aanvraag afkomstig is. Er is mogelijk extra configuratie vereist voor apps die worden gehost achter extra proxyservers en load balancers. Zie ASP.NET Core configureren voor gebruik met proxyservers en load balancersvoor meer informatie.

Bewaking en logboekregistratie

ASP.NET Core-apps die zijn geïmplementeerd in App Service, ontvangen automatisch een App Service-extensie ASP.NET Core Logging Integration. Met de extensie kunt u logboekregistratie integreren voor ASP.NET Core-apps in Azure App Service.

ASP.NET Core-apps die zijn geïmplementeerd in App Service, ontvangen automatisch een App Service-extensie, ASP.NET Core Logging Extensions. Met de extensie kunt u logboekregistratie integreren voor ASP.NET Core-apps in Azure App Service.

Raadpleeg de volgende artikelen voor informatie over bewaking, logboekregistratie en probleemoplossing:

Applicaties monitoren in Azure App Service
Meer informatie over het controleren van quota en metrische gegevens voor apps en App Service-plannen.

diagnostische logboekregistratie inschakelen voor apps in Azure App Service
Ontdek hoe u diagnostische logboekregistratie kunt inschakelen en openen voor HTTP-statuscodes, mislukte aanvragen en webserveractiviteit.

fouten afhandelen in ASP.NET Core
Algemene benaderingen voor het afhandelen van fouten in ASP.NET Core-apps begrijpen.

Problemen met ASP.NET Core in Azure App Service en IIS- oplossen
Meer informatie over het diagnosticeren van problemen met Azure App Service-implementaties met ASP.NET Core-apps.

Veelvoorkomende fout oplossen voor Azure App Service en IIS met ASP.NET Core-
Bekijk de veelvoorkomende configuratiefouten voor implementaties voor apps die worden gehost door Azure App Service/IIS met advies voor probleemoplossing.

Sleutelring voor gegevensbescherming en implementatieslots

gegevensbeveiligingssleutels blijven behouden in de map %HOME%\ASP.NET\DataProtection- Keys. Deze map wordt ondersteund door netwerkopslag en wordt gesynchroniseerd op alle computers waarop de app wordt gehost. Sleutels zijn niet beveiligd in rust. Deze map levert de sleutelring aan alle instanties van een app in één implementatieslot. Afzonderlijke implementatieslots, zoals Staging en Productie, delen geen sleutelring.

Wanneer u wisselt tussen implementatieslots, zal elk systeem dat gegevensbescherming gebruikt opgeslagen gegevens niet kunnen ontsleutelen met behulp van de sleutelhanger in het vorige slot. ASP.NET Cookie Middleware maakt gebruik van gegevensbescherming om de cookies te beschermen. Dit leidt ertoe dat gebruikers worden afgemeld bij een app die gebruikmaakt van de standaard-ASP.NET Cookie Middleware. Voor een slot-onafhankelijke oplossing voor sleutelringen gebruikt u een externe leverancier van sleutelringen, zoals:

  • Azure Blob Storage (opslagdienst van Azure)
  • Azure Key Vault
  • SQL-winkel
  • Redis cache

Zie Key Storage-providers in ASP.NET Corevoor meer informatie.

Een ASP.NET Core-app implementeren die gebruikmaakt van een .NET Core-preview

Als u een app wilt implementeren die gebruikmaakt van een preview-versie van .NET Core, raadpleegt u de volgende bronnen. Deze benaderingen worden ook gebruikt wanneer de runtime beschikbaar is, maar de SDK niet is geïnstalleerd in Azure App Service.

Zie de ASP.NET Core op het App Service-dashboard voor de versie van ASP.NET Core die beschikbaar is in Azure App Service.

Zie Selecteer de .NET Core-versie die u wilt gebruiken voor informatie over het selecteren van de versie van de .NET SDK voor zelfstandige implementaties.

De .NET Core SDK-versie opgeven met behulp van Azure Pipelines

Gebruik Azure App Service CI/CD-scenario's om een continue integratiebuild in te stellen met Azure DevOps. Nadat de Azure DevOps-build is gemaakt, configureert u eventueel de build voor het gebruik van een specifieke SDK-versie.

Geef de .NET Core SDK-versie op

Wanneer u het App Service-implementatiecentrum gebruikt om een Azure DevOps-build te maken, bevat de standaard build-pijplijn stappen voor Restore, Build, Testen Publish. Als u de SDK-versie wilt opgeven, selecteert u de knop toevoegen (+) in de takenlijst van de agent om een nieuwe stap toe te voegen. Zoek in de zoekbalk naar .NET Core SDK-.

de .NET Core SDK-stap toevoegen

Verplaats de stap naar de eerste positie in de build, zodat de volgende stappen de opgegeven versie van de .NET Core SDK gebruiken. Geef de versie van de .NET Core SDK op. In dit voorbeeld is de SDK ingesteld op 3.0.100.

voltooide SDK-stap

Als u een zelf-ingesloten implementatie (SCD)wilt publiceren, configureert u SCD in de Publish stap en geeft u de Runtime Identifier (RID)op.

zelfstandige publicatie

Een zelfstandige preview-app implementeren

Een SCD (self-contained deployment) die is gericht op een preview-runtime, bevat de preview-runtime in de implementatie.

Bij het implementeren van een zelfstandige app:

Volg de richtlijnen in de sectie De zelfstandige van de app implementeren.

Docker gebruiken met Web Apps voor containers

Docker Hub bij https://hub.docker.com/_/microsoft-dotnet bevat de nieuwste preview Docker-afbeeldingen. Deze afbeeldingen kunnen worden gebruikt als basisafbeelding. Gebruik de afbeelding en implementeer deze zoals gebruikelijk in Web Apps for Containers.

De preview-site-extensie installeren

Als er een probleem optreedt met de previewsite-extensie, open een dotnet/AspNetCore-issue.

  1. Navigeer vanuit Azure Portal naar de App Service.
  2. Selecteer de web-app.
  3. Typ 'ex' in het zoekvak om te filteren op Extensies of schuif omlaag in de lijst met beheerhulpprogramma's.
  4. Selecteer Extensies.
  5. Selecteer toevoegen.
  6. Selecteer de ASP.NET Core {X.Y} ({x64|x86}) Runtime--extensie in de lijst, waarbij {X.Y} de ASP.NET Core preview-versie is en {x64|x86} het platform opgeeft.
  7. Selecteer OK om de juridische voorwaarden te accepteren.
  8. Selecteer OK- om de extensie te installeren.

Wanneer de bewerking is voltooid, wordt de nieuwste .NET Core-preview geïnstalleerd. Controleer de installatie:

  1. Selecteer Geavanceerde hulpprogramma's.

  2. Selecteer Go in Geavanceerde hulpprogramma's.

  3. Selecteer de menuopdracht Console voor foutopsporing>PowerShell.

  4. Voer bij de PowerShell-prompt de volgende opdracht uit. Vervang de ASP.NET Core-runtimeversie door {X.Y} en het platform voor {PLATFORM} in de opdracht:

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

    De opdracht retourneert True wanneer de x64 preview-runtime is geïnstalleerd.

Notitie

De platformarchitectuur (x86/x64) van een App Services-app wordt ingesteld in de instellingen van de app in Azure Portal voor apps die worden gehost op een A-serie compute (Basic) of een hogere hostinglaag. Controleer of de publicatie-instellingen van de app (bijvoorbeeld in visual Studio publicatieprofiel (.pubxml)) overeenkomen met de instelling in de serviceconfiguratie van de app in Azure Portal.

Als de app wordt uitgevoerd in de procesmodus en de platformarchitectuur is geconfigureerd voor 64-bits (x64), gebruikt de ASP.NET Core-module de 64-bits preview-runtime, indien aanwezig. Installeer de ASP.NET Core {X.Y} (x64) Runtime-extensie met behulp van Azure Portal.

Nadat u de x64 preview-runtime hebt geïnstalleerd, voert u de volgende opdracht uit in het opdrachtvenster van Azure Kudu PowerShell om de installatie te controleren. Vervang de ASP.NET Core-runtimeversie door {X.Y} in de volgende opdracht:

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

De opdracht retourneert True wanneer de x64 preview-runtime is geïnstalleerd.

De preview-site-extensie gebruiken met een ARM-sjabloon

Als een ARM-sjabloon wordt gebruikt voor het maken en implementeren van apps, kan het Microsoft.Web/sites/siteextensions resourcetype worden gebruikt om de site-extensie toe te voegen aan een web-app. In het volgende voorbeeld wordt de site-extensie ASP.NET Core 5.0 (x64) Runtime (AspNetCoreRuntime.5.0.x64) toegevoegd aan de app:

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

Gebruik voor de tijdelijke aanduiding {SITE NAME}de naam van de app in Azure App Service (bijvoorbeeld contoso).

De app publiceren en implementeren

Voor een 64-bits implementatie:

  • Gebruik een 64-bits .NET Core SDK om een 64-bits app te bouwen.
  • Stel het Platform in op 64 bit in de Configuratie>Algemene instellingen van de App Service. De app moet een Basic- of hoger serviceplan gebruiken om de keuze van platformbitness mogelijk te maken.

De frameworkafhankelijke app uitrollen

Apps die als frameworkafhankelijk zijn gepubliceerd, zijn platformoverschrijdend en bevatten geen .NET-runtime in de implementatie. Azure App Service bevat de .NET-runtime.

  1. Klik met de rechtermuisknop op het project in Solution Explorer en selecteer Publiceren. U kunt ook Build>Publish {Application Name} selecteren op de werkbalk van Visual Studio.
  2. Selecteer in het dialoogvenster PublicerenAzure>Volgende.
  3. Selecteer de Azure-service.
  4. Selecteer Geavanceerde. Het dialoogvenster Publiceren wordt geopend.
  5. Selecteer een resourcegroep en hostingabonnement of maak nieuwe.
  6. Selecteer voltooien.
  7. Op de pagina Publiceren:
    • Selecteer voor Configuratiehet penpictogram Configuratie bewerken:
      • Controleer of de configuratie Release is geselecteerd.
      • Selecteer in de implementatiemodus vervolgkeuzelijst Frameworkafhankelijke.
      • Selecteer in de vervolgkeuzelijst Target Runtime de gewenste runtime. De standaardwaarde is win-x86.
    • Als u extra bestanden wilt verwijderen bij de implementatie, opent u opties voor het publiceren van bestanden en schakelt u het selectievakje in om extra bestanden op de bestemming te verwijderen.
    • Selecteer opslaan.
    • Selecteer publiceren.

De app zelfvoorzienend implementeren

Als u een app als zelfstandig publiceert, wordt een platformspecifiek uitvoerbaar bestand geproduceerd. De uitvoerpublicatiemap bevat alle onderdelen van de app, waaronder de .NET-bibliotheken en de doel-runtime. Zie [Zelfstandige publiceren]/dotnet/core/deploying/#publish-self-contained) voor meer informatie. Gebruik Visual Studio of de .NET CLI voor een scd-(self-contained deployment).

  1. Klik met de rechtermuisknop op het project in Solution Explorer en selecteer Publiceren. U kunt ook Build>Publish {Application Name} selecteren op de werkbalk van Visual Studio.
  2. Selecteer in het dialoogvenster Publiceren het volgende: Azure>Volgende.
  3. Selecteer de Azure-service.
  4. Selecteer Geavanceerde. Het dialoogvenster Publiceren wordt geopend.
  5. Selecteer een resourcegroep en hostingabonnement of maak nieuwe.
  6. Selecteer voltooien.
  7. Op de pagina Publiceren:
    • Voor Configuratie, selecteer het penicoon Configuratie bewerken:
      • Controleer of de configuratie Release is geselecteerd.
      • Selecteer in de implementatiemodus vervolgkeuzelijst zelfstandige.
      • Selecteer in de vervolgkeuzelijst Target Runtime de gewenste runtime. De standaardwaarde is win-x86.
    • Als u extra bestanden wilt verwijderen bij de implementatie, opent u opties voor het publiceren van bestanden en schakelt u het selectievakje in om extra bestanden op de bestemming te verwijderen.
    • Selecteer opslaan.
    • Selecteer publiceren.

Protocolinstellingen (HTTPS)

Met beveiligde protocolbindingen kunt u een certificaat opgeven dat moet worden gebruikt bij het reageren op aanvragen via HTTPS. Binding vereist een geldig privécertificaat (PFX-) dat is uitgegeven voor de specifieke hostnaam. Zie Zelfstudie: Een bestaand aangepast SSL-certificaat binden aan Azure App Servicevoor meer informatie.

Transformeren web.config

Als u web.config moet transformeren bij publicatie (bijvoorbeeld omgevingsvariabelen instellen op basis van de configuratie, het profiel of de omgeving), raadpleeg dan Transform web.config.

Aanvullende informatiebronnen

Azure App Service op Windows Server maakt gebruik van IIS-(Internet Information Services). Kestrel en YARP aan de frontend voorzien in de load balancer. De volgende onderwerpen hebben betrekking op de onderliggende IIS-technologie: