Zelfstudie: Een ASP.NET Core- en Azure SQL Database-app implementeren in Azure-app Service

In deze zelfstudie leert u hoe u een gegevensgestuurde ASP.NET Core-app implementeert in Azure-app Service en verbinding maakt met een Azure SQL Database. U implementeert ook een Azure Cache voor Redis om de cachecode in te schakelen in uw toepassing. Azure-app Service is een uiterst schaalbare webhostingservice die eenvoudig apps kan implementeren in Windows of Linux. Hoewel in deze zelfstudie een ASP.NET Core 7.0-app wordt gebruikt, is het proces hetzelfde voor andere versies van ASP.NET Core en ASP.NET Framework.

Voor deze zelfstudie hebt u het volgende nodig:

  • Een Azure-account met een actief abonnement. Als u geen Azure-account hebt, kunt u er gratis een maken.
  • Een GitHub-account. je kunt er ook gratis een krijgen.

Voorbeeldtoepassing

Als u de voorbeeldtoepassing wilt verkennen die in deze zelfstudie wordt gebruikt, downloadt u deze uit de opslagplaats https://github.com/Azure-Samples/msdocs-app-service-sqldb-dotnetcore of kloont u deze met behulp van de volgende Git-opdracht:

git clone https://github.com/Azure-Samples/msdocs-app-service-sqldb-dotnetcore.git
cd msdocs-app-service-sqldb-dotnetcore

1. App Service, database en cache maken

In deze stap maakt u de Azure-resources. Met de stappen die in deze zelfstudie worden gebruikt, maakt u een set beveiligde standaardbronnen met App Service, Azure SQL Database en Azure Cache. Voor het aanmaakproces geeft u het volgende op:

  • De naam voor de web-app. Dit is de naam die wordt gebruikt als onderdeel van de DNS-naam voor uw web-app in de vorm van https://<app-name>.azurewebsites.net.
  • De regio om de app fysiek in de wereld uit te voeren.
  • De runtimestack voor de app. Hier selecteert u de .NET-versie die u voor uw app wilt gebruiken.
  • Het hostingabonnement voor de app. Dit is de prijscategorie die de set functies en schaalcapaciteit voor uw app bevat.
  • De resourcegroep voor de app. Met een resourcegroep kunt u alle Azure-resources die nodig zijn voor de toepassing groeperen (in een logische container).

Meld u aan bij Azure Portal en volg deze stappen om uw Azure-app Service-resources te maken.

Stap 1: In Azure Portal:

  1. Voer 'web-app-database' in de zoekbalk boven aan Azure Portal in.
  2. Selecteer het item met het label Web App + Database onder de kop Marketplace . U kunt ook rechtstreeks naar de wizard voor het maken navigeren.

Een schermopname die laat zien hoe u het zoekvak in de bovenste werkbalk gebruikt om de wizard Web-app en database maken te vinden.

Stap 2: Vul op de pagina Web-app en database maken het formulier als volgt in.

  1. Resourcegroep → Nieuwe maken selecteren en een naam van msdocs-core-sql-tutorial gebruiken.
  2. Regio → Elke Azure-regio bij u in de buurt.
  3. Naammsdocs-core-sql-XYZ waarbij XYZ uit drie willekeurige tekens bestaat. Deze naam moet uniek zijn binnen Azure.
  4. Runtimestack.NET 7 (STS).
  5. Azure Cache voor Redis toevoegen? → Ja.
  6. HostingabonnementBasic. Wanneer u klaar bent, kunt u later omhoog schalen naar een prijscategorie voor productie.
  7. Selecteer SQLAzure als de database-engine. Azure SQL Database is een volledig beheerde PaaS-database-engine (Platform as a Service) die altijd wordt uitgevoerd op de nieuwste stabiele versie van SQL Server.
  8. Selecteer Controleren + maken.
  9. Nadat de validatie is voltooid, selecteert u Maken.

Een schermopname die laat zien hoe u een nieuwe app en database configureert in de wizard Web App + Database.

Stap 3: Het duurt enkele minuten voordat de implementatie is voltooid. Zodra de implementatie is voltooid, selecteert u de knop Ga naar resource . U wordt rechtstreeks naar de App Service-app gebracht, maar de volgende resources worden gemaakt:

  • Resourcegroep → De container voor alle gemaakte resources.
  • App Service-plan → Definieert de rekenresources voor App Service. Er wordt een Linux-plan in de Basic-laag gemaakt.
  • App Service → Vertegenwoordigt uw app en wordt uitgevoerd in het App Service-plan.
  • Virtueel netwerk → geïntegreerd met de App Service-app en isoleert back-endnetwerkverkeer.
  • Privé-eindpunten → Access-eindpunten voor de databaseserver en de Redis-cache in het virtuele netwerk.
  • Netwerkinterfaces → Vertegenwoordigt privé-IP-adressen, één voor elk van de privé-eindpunten.
  • Azure SQL Database-server → alleen toegankelijk vanaf het privé-eindpunt.
  • Azure SQL Database → een database en een gebruiker worden voor u gemaakt op de server.
  • Azure Cache voor Redis → alleen toegankelijk vanaf het privé-eindpunt.
  • Privé-DNS zones → DNS-omzetting van de databaseserver en de Redis-cache in het virtuele netwerk inschakelen.

Een schermopname van het implementatieproces voltooid.

2. Controleer verbindingsreeks s

De wizard voor maken heeft verbindingsreeks s gegenereerd voor de SQL-database en de Redis-cache. Zoek in deze stap de gegenereerde verbindingsreeks s voor later gebruik.

Stap 1: Selecteer Configuratie in het linkermenu op de pagina App Service.

Een schermopname van het openen van de configuratiepagina in App Service.

Stap 2:

  1. Schuif naar de onderkant van de pagina en zoek AZURE_SQL_CONNECTIONSTRING in de sectie Verbinding maken iontekenreeksen. Deze tekenreeks is gegenereerd op basis van de nieuwe SQL-database door de wizard maken. Als u uw toepassing wilt instellen, hebt u alleen deze naam nodig.
  2. Zoek ook AZURE_REDIS_CONNECTIONSTRING in de sectie Toepassingsinstellingen . Deze tekenreeks is gegenereerd op basis van de nieuwe Redis-cache door de wizard maken. Als u uw toepassing wilt instellen, hebt u alleen deze naam nodig.
  3. Als u wilt, kunt u de knop Bewerken rechts van elke instelling selecteren en de waarde ervan bekijken of kopiëren. Later wijzigt u uw toepassing in gebruik AZURE_SQL_CONNECTIONSTRING en AZURE_REDIS_CONNECTIONSTRING.

Een schermopname die laat zien hoe u een app-instelling maakt.

3. Voorbeeldcode implementeren

In deze stap configureert u gitHub-implementatie met behulp van GitHub Actions. Het is slechts een van de vele manieren om te implementeren in App Service, maar ook een uitstekende manier om continue integratie in uw implementatieproces te hebben. Standaard wordt met elke git push gitHub-opslagplaats de build- en implementatieactie gestart.

Stap 1: In een nieuw browservenster:

  1. Meld u aan bij uw GitHub-account.
  2. Navigeer naar https://github.com/Azure-Samples/msdocs-app-service-sqldb-dotnetcore.
  3. Selecteer Vorken.
  4. Selecteer Een fork maken.

Een schermopname van het maken van een fork van de GitHub-voorbeeldopslagplaats.

Stap 2: Selecteer Implementatiecentrum op de pagina App Service in het linkermenu.

Een schermopname die laat zien hoe u het implementatiecentrum opent in App Service.

Stap 3: Op de pagina Implementatiecentrum:

  1. Selecteer GitHub in Bron. GitHub Actions is standaard geselecteerd als buildprovider.
  2. Meld u aan bij uw GitHub-account en volg de prompt om Azure te autoriseren.
  3. Selecteer uw account in Organisatie.
  4. Selecteer in Opslagplaats msdocs-app-service-sqldb-dotnetcore.
  5. Selecteer in Vertakking de hoofdmap.
  6. Selecteer Opslaan in het bovenste menu. App Service voert een werkstroombestand door in de gekozen GitHub-opslagplaats in de .github/workflows map.

Een schermopname van het configureren van CI/CD met behulp van GitHub Actions.

Stap 4: Back the GitHub page of the forked sample, open Visual Studio Code in de browser door op de . toets te drukken.

Een schermopname van het openen van de Visual Studio Code-browserervaring in GitHub.

Stap 5: In Visual Studio Code in de browser:

  1. Open DotNetCoreSqlDb/appsettings.json in de verkenner.
  2. Wijzig de naam van de verbindingsreeks MyDbConnectionAZURE_SQL_CONNECTIONSTRINGin , die overeenkomt met de verbindingsreeks die u eerder in App Service hebt gemaakt.

Een schermopname van verbindingsreeks naam is gewijzigd in appsettings.json.

Stap 6:

  1. Open DotNetCoreSqlDb/Program.cs in de verkenner.
  2. Wijzig in de options.UseSqlServer methode de naam van de verbindingsreeks MyDbConnection in AZURE_SQL_CONNECTIONSTRING. Hier wordt de verbindingsreeks gebruikt door de voorbeeldtoepassing.
  3. Verwijder de builder.Services.AddDistributedMemoryCache(); methode en vervang deze door de volgende code. De code wijzigt uw code van het gebruik van een cache in het geheugen in de Redis-cache in Azure en doet dit met behulp AZURE_REDIS_CONNECTIONSTRING van eerder.
builder.Services.AddStackExchangeRedisCache(options =>
{
options.Configuration = builder.Configuration["AZURE_REDIS_CONNECTIONSTRING"];
options.InstanceName = "SampleInstance";
});

Een schermopname van verbindingsreeks naam is gewijzigd in Program.cs.

Stap 7:

  1. Open .github/workflows/main_msdocs-core-sql-XYZ in de verkenner. Dit bestand is gemaakt door de wizard App Service maken.
  2. Voeg onder de dotnet publish stap een stap toe om het Entity Framework Core-hulpprogramma met de opdracht dotnet tool install -g dotnet-ef --version 7.0.14te installeren.
  3. Voeg onder de nieuwe stap nog een stap toe om een databasemigratiebundel te genereren in het implementatiepakket: dotnet ef migrations bundle --runtime linux-x64 -p DotNetCoreSqlDb/DotNetCoreSqlDb.csproj -o ${{env.DOTNET_ROOT}}/myapp/migrate. De migratiebundel is een zelfstandig uitvoerbaar bestand dat u kunt uitvoeren in de productieomgeving zonder dat u de .NET SDK nodig hebt. De Linux-container van App Service heeft alleen de .NET-runtime en niet de .NET SDK.

Een schermopname van de stappen die zijn toegevoegd aan het GitHub-werkstroombestand voor databasemigratiebundel.

Stap 8:

  1. Selecteer de extensie Broncodebeheer .
  2. Typ in het tekstvak een doorvoeringsbericht zoals Configure DB & Redis & add migration bundle.
  3. Selecteer Doorvoeren en pushen.

Een schermopname van de wijzigingen die worden doorgevoerd en gepusht naar GitHub.

Stap 9: Terug op de pagina Implementatiecentrum in Azure Portal:

  1. Selecteer Logboeken. Er is al een nieuwe implementatieuitvoering gestart op basis van uw doorgevoerde wijzigingen.
  2. Selecteer in het logboekitem voor de implementatieuitvoering de vermelding Build/Deploy Logs met de meest recente tijdstempel.

Een schermopname die laat zien hoe u implementatielogboeken opent in het implementatiecentrum.

Stap 10: U gaat naar uw GitHub-opslagplaats en ziet dat de GitHub-actie wordt uitgevoerd. Het werkstroombestand definieert twee afzonderlijke fasen, bouwen en implementeren. Wacht totdat de GitHub-uitvoering de status Voltooid weergeeft. Dit duurt enkele minuten.

Een schermopname van een Actieve GitHub-uitvoering.

4. Databaseschema genereren

Met de SQL Database die wordt beveiligd door het virtuele netwerk, is de eenvoudigste manier om dotnet-databasemigraties uit te voeren in een SSH-sessie met de App Service-container.

Stap 1: Ga terug naar de App Service-pagina en selecteer SSH in het linkermenu.

Een schermopname van het openen van de SSH-shell voor uw app vanuit Azure Portal.

Stap 2: In de SSH-terminal:

  1. Voer cd /home/site/wwwroot uit. Hier volgen al uw geïmplementeerde bestanden.
  2. Voer de migratiebundel uit die wordt gegenereerd door de GitHub-werkstroom met ./migrate. Als dit lukt, maakt App Service verbinding met de SQL Database. Alleen wijzigingen in bestanden in /home kunnen zich blijven voordoen na het opnieuw opstarten van de app. Wijzigingen buiten /home zijn niet behouden.

Een schermopname van de opdrachten die moeten worden uitgevoerd in de SSH-shell en de bijbehorende uitvoer.

5. Blader naar de app

Stap 1: Op de App Service-pagina:

  1. Selecteer Overzicht in het linkermenu.
  2. Selecteer de URL van uw app. U kunt ook rechtstreeks naar https://<app-name>.azurewebsites.net.

Een schermopname die laat zien hoe u een App Service start vanuit Azure Portal.

Stap 2: Voeg een paar taken toe aan de lijst. Gefeliciteerd, u voert een beveiligde gegevensgestuurde ASP.NET Core-app uit in Azure-app Service.

Een schermopname van de .NET Core-app die wordt uitgevoerd in App Service.

Tip

De voorbeeldtoepassing implementeert het cache-aside-patroon . Wanneer u een gegevensweergave voor de tweede keer bezoekt of dezelfde pagina opnieuw laadt nadat u gegevenswijzigingen hebt aangebracht, wordt de verwerkingstijd op de webpagina veel sneller weergegeven omdat de gegevens uit de cache worden geladen in plaats van de database.

6. Diagnostische logboeken streamen

Azure-app Service legt alle berichten vast die zijn vastgelegd in de console om u te helpen bij het diagnosticeren van problemen met uw toepassing. De voorbeeld-app voert consolelogboekberichten uit in elk van de eindpunten om deze mogelijkheid te demonstreren.

Stap 1: Op de App Service-pagina:

  1. Selecteer App Service-logboeken in het linkermenu.
  2. Selecteer Bestandssysteem onder Toepassingslogboek.

Een schermopname van het inschakelen van systeemeigen logboeken in App Service in Azure Portal.

Stap 2: Selecteer in het menu links de optie Logboekstream. U ziet de logboeken voor uw app, inclusief platformlogboeken en logboeken vanuit de container.

Een schermopname die laat zien hoe u de logboekstream kunt weergeven in Azure Portal.

7. Resources opschonen

Wanneer u klaar bent, kunt u alle resources uit uw Azure-abonnement verwijderen door de resourcegroep te verwijderen.

Stap 1: In de zoekbalk boven aan Azure Portal:

  1. Voer de naam van de resourcegroup in.
  2. Selecteer de resourcegroep.

Een schermopname van het zoeken naar en navigeren naar een resourcegroep in Azure Portal.

Stap 2: Selecteer op de pagina Resourcegroep verwijderen.

Een schermopname van de locatie van de knop Resourcegroep verwijderen in Azure Portal.

Stap 3:

  1. Voer de naam van de resourcegroep in om uw verwijdering te bevestigen.
  2. Selecteer Verwijderen.

Een schermopname van het bevestigingsvenster voor het verwijderen van een resourcegroep in Azure Portal. :

Veelgestelde vragen

Hoeveel kost dit instellen?

De prijzen voor het maken van resources zijn als volgt:

  • Het App Service-plan wordt gemaakt in de Basic-laag en kan omhoog of omlaag worden geschaald. Zie Prijzen voor App Service.
  • De Azure SQL Database wordt gemaakt in een serverloze laag voor algemeen gebruik op hardware uit de Standard-serie met de minimale kernen. Er zijn kleine kosten en kunnen worden gedistribueerd naar andere regio's. U kunt de kosten nog meer minimaliseren door de maximale grootte te verkleinen of u kunt deze omhoog schalen door de servicelaag, rekenlaag, hardwareconfiguratie, aantal kernen, databasegrootte en zoneredundantie aan te passen. Zie Prijzen van Azure SQL Database.
  • De Azure Cache voor Redis wordt gemaakt in de Basic-laag met de minimale cachegrootte. Er zijn kleine kosten verbonden aan deze laag. U kunt deze omhoog schalen naar hogere prestatielagen voor hogere beschikbaarheid, clustering en andere functies. Zie Azure Cache voor Redis prijzen.
  • Voor het virtuele netwerk worden geen kosten in rekening gebracht, tenzij u extra functionaliteit configureert, zoals peering. Zie prijzen voor Azure Virtual Network.
  • Voor de privé-DNS-zone worden kleine kosten in rekening gebracht. Zie prijzen voor Azure DNS.

Hoe kan ik verbinding maken met de Azure SQL Database-server die is beveiligd achter het virtuele netwerk met andere hulpprogramma's?

  • Voor basistoegang vanuit een opdrachtregelprogramma kunt u uitvoeren sqlcmd vanuit de SSH-terminal van de app. De container van de app wordt niet geleverd sqlcmd, dus u moet deze handmatig installeren. Houd er rekening mee dat de geïnstalleerde client niet blijft bestaan tijdens het opnieuw opstarten van de app.
  • Als u verbinding wilt maken vanuit een SQL Server Management Studio-client of vanuit Visual Studio, moet uw machine zich in het virtuele netwerk bevinden. Het kan bijvoorbeeld een Virtuele Azure-machine zijn die is verbonden met een van de subnetten of een machine in een on-premises netwerk met een site-naar-site-VPN-verbinding met het virtuele Azure-netwerk.

Hoe werkt het ontwikkelen van lokale apps met GitHub Actions?

Neem het automatisch gegenereerde werkstroombestand uit App Service als voorbeeld, elk git push start een nieuwe build- en implementatieuitvoering. Vanuit een lokale kloon van de GitHub-opslagplaats pusht u de gewenste updates naar GitHub. Voorbeeld:

git add .
git commit -m "<some-message>"
git push origin main

Hoe kan ik fouten opsporen tijdens de implementatie van GitHub Actions?

Als een stap mislukt in het automatisch gegenereerde GitHub-werkstroombestand, wijzigt u de mislukte opdracht om uitgebreidere uitvoer te genereren. U kunt bijvoorbeeld meer uitvoer krijgen van een van de dotnet opdrachten door de -v optie toe te voegen. Voer uw wijzigingen door en push deze om een andere implementatie naar App Service te activeren.

Volgende stappen

Ga naar de volgende zelfstudie voor meer informatie over het beveiligen van uw app met een aangepast domein en certificaat.

U kunt ook andere resources bekijken: