Självstudie: Distribuera en ASP.NET Core- och Azure SQL Database-app till Azure App Service

I den här självstudien får du lära dig hur du distribuerar en datadriven ASP.NET Core-app till Azure App Service och ansluter till en Azure SQL Database. Du distribuerar också en Azure Cache for Redis för att aktivera cachelagringskoden i ditt program. Azure App Service är en mycket skalbar webbvärdtjänst med självkorrigering som enkelt kan distribuera appar i Windows eller Linux. Även om den här självstudien använder en ASP.NET Core 7.0-app är processen densamma för andra versioner av ASP.NET Core och ASP.NET Framework.

För den här kursen behöver du:

Programexempel

Om du vill utforska exempelprogrammet som används i den här självstudien laddar du ned det från lagringsplatsen https://github.com/Azure-Samples/msdocs-app-service-sqldb-dotnetcore eller klonar det med hjälp av följande Git-kommando:

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

1. Skapa App Service, databas och cache

I det här steget skapar du Azure-resurserna. Stegen som används i den här självstudien skapar en uppsättning säkra som standardresurser som inkluderar App Service, Azure SQL Database och Azure Cache. För skapandeprocessen anger du:

  • Webbappens namn . Det är namnet som används som en del av DNS-namnet för din webbapp i form av https://<app-name>.azurewebsites.net.
  • Regionen som ska köra appen fysiskt i världen.
  • Runtime-stacken för appen. Det är där du väljer den .NET-version som ska användas för din app.
  • Värdplanen för appen. Det är prisnivån som innehåller uppsättningen funktioner och skalningskapacitet för din app.
  • Resursgruppen för appen. Med en resursgrupp kan du gruppera (i en logisk container) alla Azure-resurser som behövs för programmet.

Logga in på Azure-portalen och följ dessa steg för att skapa dina Azure App Service-resurser.

Steg 1: I Azure-portalen:

  1. Ange "webbappdatabas" i sökfältet överst i Azure-portalen.
  2. Välj objektet webapp + databas under rubriken Marketplace . Du kan också navigera till guiden för att skapa direkt.

En skärmbild som visar hur du använder sökrutan i det övre verktygsfältet för att hitta guiden Skapa webbapp + databas.

Steg 2:sidan Skapa webbapp + databas fyller du i formuläret på följande sätt.

  1. Resursgrupp → Välj Skapa ny och använd namnet msdocs-core-sql-tutorial.
  2. Region → Valfri Azure-region nära dig.
  3. Namnmsdocs-core-sql-XYZ där XYZ är tre slumpmässiga tecken. Användarnamnet måste vara unikt inom Azure.
  4. Körningsstack.NET 7 (STS).
  5. Vill du lägga till Azure Cache for Redis? → Ja.
  6. VärdplanBasic. När du är klar kan du skala upp till en produktionsprisnivå senare.
  7. Välj SQLAzure som databasmotor. Azure SQL Database är en fullständigt hanterad paaS-databasmotor (plattform som en tjänst) som alltid körs på den senaste stabila versionen av SQL Server.
  8. Välj Granska + skapa.
  9. När valideringen är klar väljer du Skapa.

En skärmbild som visar hur du konfigurerar en ny app och databas i guiden Webbapp + Databas.

Steg 3: Distributionen tar några minuter att slutföra. När distributionen är klar väljer du knappen Gå till resurs . Du tas direkt till App Service-appen, men följande resurser skapas:

  • Resursgrupp → Containern för alla skapade resurser.
  • App Service-plan → Definierar beräkningsresurserna för App Service. En Linux-plan på Basic-nivån skapas.
  • App Service → Representerar din app och körs i App Service-planen.
  • Virtuellt nätverk → integrerat med App Service-appen och isolerar serverdelsnätverkstrafik.
  • Privata slutpunkter → Åtkomstslutpunkter för databasservern och Redis-cachen i det virtuella nätverket.
  • Nätverksgränssnitt → Representerar privata IP-adresser, en för var och en av de privata slutpunkterna.
  • Azure SQL Database-servern → Endast tillgänglig bakom den privata slutpunkten.
  • Azure SQL Database → En databas och en användare skapas åt dig på servern.
  • Azure Cache for Redis → Endast tillgänglig bakom den privata slutpunkten.
  • Privat DNS zoner → Aktivera DNS-matchning för databasservern och Redis-cachen i det virtuella nätverket.

En skärmbild som visar hur distributionsprocessen har slutförts.

2. Kontrollera anslutningssträng

Guiden för att skapa genererade anslutningssträng för SQL-databasen och Redis-cachen redan. I det här steget letar du upp de genererade anslutningssträng för senare.

Steg 1: På sidan App Service går du till den vänstra menyn och väljer Konfiguration.

En skärmbild som visar hur du öppnar konfigurationssidan i App Service.

Steg 2:

  1. Rulla längst ned på sidan och leta reda på AZURE_SQL_CONNECTIONSTRING i avsnittet Anslut ionssträngar. Den här strängen genererades från den nya SQL-databasen genom guiden skapa. Det här namnet är allt du behöver för att konfigurera programmet.
  2. Leta också upp AZURE_REDIS_CONNECTIONSTRING i avsnittet Programinställningar . Den här strängen genererades från den nya Redis-cachen av guiden skapa. Det här namnet är allt du behöver för att konfigurera programmet.
  3. Om du vill kan du välja knappen Redigera till höger om varje inställning och se eller kopiera dess värde. Senare ändrar du programmet till att använda AZURE_SQL_CONNECTIONSTRING och AZURE_REDIS_CONNECTIONSTRING.

En skärmbild som visar hur du skapar en appinställning.

3. Distribuera exempelkod

I det här steget konfigurerar du GitHub-distribution med GitHub Actions. Det är bara ett av många sätt att distribuera till App Service, men också ett bra sätt att ha kontinuerlig integrering i distributionsprocessen. Som standard startar varje git push till din GitHub-lagringsplats bygg- och distributionsåtgärden.

Steg 1: I ett nytt webbläsarfönster:

  1. Logga in på ditt GitHub-konto.
  2. Navigera till https://github.com/Azure-Samples/msdocs-app-service-sqldb-dotnetcore.
  3. Markera Förgreningen.
  4. Välj Skapa förgrening.

En skärmbild som visar hur du skapar en förgrening av GitHub-exempellagringsplatsen.

Steg 2: På sidan App Service går du till den vänstra menyn och väljer Distributionscenter.

En skärmbild som visar hur du öppnar distributionscentret i App Service.

Steg 3: På sidan Distributionscenter:

  1. I Källa väljer du GitHub. Som standard är GitHub Actions valt som byggprovider.
  2. Logga in på ditt GitHub-konto och följ anvisningarna för att auktorisera Azure.
  3. I Organisation väljer du ditt konto.
  4. I Lagringsplats väljer du msdocs-app-service-sqldb-dotnetcore.
  5. I Gren väljer du huvud.
  6. I den översta menyn väljer du Spara. App Service checkar in en arbetsflödesfil i den valda GitHub-lagringsplatsen i .github/workflows katalogen.

En skärmbild som visar hur du konfigurerar CI/CD med GitHub Actions.

Steg 4: Gå tillbaka till GitHub-sidan i det förgrenade exemplet och öppna Visual Studio Code i webbläsaren genom att trycka på . nyckeln.

En skärmbild som visar hur du öppnar Visual Studio Code-webbläsarupplevelsen i GitHub.

Steg 5: I Visual Studio Code i webbläsaren:

  1. Öppna DotNetCoreSqlDb/appsettings.json i utforskaren.
  2. Ändra namnet på anslutningssträng MyDbConnection till AZURE_SQL_CONNECTIONSTRING, som matchar anslutningssträng som skapades i App Service tidigare.

En skärmbild som visar anslutningssträng namn ändrat i appsettings.json.

Steg 6:

  1. Öppna DotNetCoreSqlDb/Program.cs i utforskaren.
  2. options.UseSqlServer I -metoden ändrar du namnet på anslutningssträng MyDbConnection till AZURE_SQL_CONNECTIONSTRING. Det är här som anslutningssträng används av exempelprogrammet.
  3. builder.Services.AddDistributedMemoryCache(); Ta bort metoden och ersätt den med följande kod. Koden ändras från att använda ett minnesinternt cacheminne till Redis-cachen i Azure, och det gör den med hjälp AZURE_REDIS_CONNECTIONSTRING av tidigare.
builder.Services.AddStackExchangeRedisCache(options =>
{
options.Configuration = builder.Configuration["AZURE_REDIS_CONNECTIONSTRING"];
options.InstanceName = "SampleInstance";
});

En skärmbild som visar anslutningssträng namn har ändrats i Program.cs.

Steg 7:

  1. Öppna .github/workflows/main_msdocs-core-sql-XYZ i utforskaren. Den här filen skapades av guiden Skapa apptjänst.
  2. Under steget dotnet publish lägger du till ett steg för att installera Entity Framework Core-verktyget med kommandot dotnet tool install -g dotnet-ef --version 7.0.14.
  3. Under det nya steget lägger du till ytterligare ett steg för att generera ett databasmigreringspaket i distributionspaketet: dotnet ef migrations bundle --runtime linux-x64 -p DotNetCoreSqlDb/DotNetCoreSqlDb.csproj -o ${{env.DOTNET_ROOT}}/myapp/migrate. Migreringspaketet är en fristående körbar fil som du kan köra i produktionsmiljön utan att behöva .NET SDK. App Service Linux-containern har bara .NET-körningen och inte .NET SDK.

En skärmbild som visar steg som lagts till i GitHub-arbetsflödesfilen för databasmigreringspaketet.

Steg 8:

  1. Välj källkontrolltillägget.
  2. I textrutan skriver du ett incheckningsmeddelande som Configure DB & Redis & add migration bundle.
  3. Välj Checka in och skicka.

En skärmbild som visar de ändringar som checkas in och skickas till GitHub.

Steg 9: Tillbaka på sidan Distributionscenter i Azure-portalen:

  1. Välj Loggar. En ny distributionskörning har redan startats från de incheckade ändringarna.
  2. I loggobjektet för distributionskörningen väljer du posten Skapa/distribuera loggar med den senaste tidsstämpeln .

En skärmbild som visar hur du öppnar distributionsloggar i distributionscentret.

Steg 10: Du tas till din GitHub-lagringsplats och ser att GitHub-åtgärden körs. Arbetsflödesfilen definierar två separata steg, skapa och distribuera. Vänta tills GitHub-körningen visar statusen Slutförd. Det tar några minuter.

En skärmbild som visar en GitHub-körning pågår.

4. Generera databasschema

Med SQL Database som skyddas av det virtuella nätverket är det enklaste sättet att köra dotnet-databasmigreringar i en SSH-session med App Service-containern.

Steg 1: På sidan App Service går du till den vänstra menyn och väljer SSH.

En skärmbild som visar hur du öppnar SSH-gränssnittet för din app från Azure-portalen.

Steg 2: I SSH-terminalen:

  1. Kör cd /home/site/wwwroot. Här är alla dina distribuerade filer.
  2. Kör migreringspaketet som genereras av GitHub-arbetsflödet med ./migrate. Om det lyckas ansluter App Service till SQL Database. Endast ändringar i filer i /home kan bevaras utöver omstarter av appar. Ändringar utanför /home sparas inte.

En skärmbild som visar kommandona som ska köras i SSH-gränssnittet och deras utdata.

5. Bläddra till appen

Steg 1: På App Service-sidan:

  1. Välj Översikt på den vänstra menyn.
  2. Välj appens URL. Du kan också navigera direkt till https://<app-name>.azurewebsites.net.

En skärmbild som visar hur du startar en App Service från Azure-portalen.

Steg 2: Lägg till några uppgifter i listan. Grattis, du kör en säker datadriven ASP.NET Core-app i Azure App Service.

En skärmbild av .NET Core-appen som körs i App Service.

Dricks

Exempelprogrammet implementerar cache-aside-mönstret . När du besöker en datavy för andra gången, eller läser in samma sida igen när du har gjort dataändringar, visar bearbetningstiden på webbsidan en mycket snabbare tid eftersom den läser in data från cacheminnet i stället för databasen.

6. Strömma diagnostikloggar

Azure App Service samlar in alla meddelanden som loggas till konsolen för att hjälpa dig att diagnostisera problem med ditt program. Exempelappen matar ut konsolloggmeddelanden i var och en av sina slutpunkter för att demonstrera den här funktionen.

Steg 1: På App Service-sidan:

  1. Välj App Service-loggar på den vänstra menyn.
  2. Under Programloggning väljer du Filsystem.

En skärmbild som visar hur du aktiverar interna loggar i App Service i Azure-portalen.

Steg 2: Välj Loggström på den vänstra menyn. Du ser loggarna för din app, inklusive plattformsloggar och loggar inifrån containern.

En skärmbild som visar hur du visar loggströmmen i Azure-portalen.

7. Rensa resurser

När du är klar kan du ta bort alla resurser från din Azure-prenumeration genom att ta bort resursgruppen.

Steg 1: I sökfältet överst i Azure-portalen:

  1. Ange resursgruppsnamnet.
  2. Välj resursgruppen.

En skärmbild som visar hur du söker efter och navigerar till en resursgrupp i Azure-portalen.

Steg 2: På resursgruppssidan väljer du Ta bort resursgrupp.

En skärmbild som visar platsen för knappen Ta bort resursgrupp i Azure-portalen.

Steg 3:

  1. Ange resursgruppens namn för att bekräfta borttagningen.
  2. Välj Ta bort.

En skärmbild av bekräftelsedialogrutan för att ta bort en resursgrupp i Azure-portalen. :

Vanliga frågor och svar

Hur mycket kostar den här installationen?

Prissättningen för skapa resurser är följande:

  • App Service-planen skapas på Basic-nivån och kan skalas upp eller ned. Se Priser för App Service.
  • Azure SQL Database skapas på en serverlös nivå för generell användning på Standard-seriens maskinvara med minsta möjliga kärnor. Det finns en liten kostnad och kan distribueras till andra regioner. Du kan minimera kostnaderna ännu mer genom att minska dess maximala storlek, eller så kan du skala upp den genom att justera servernivå, beräkningsnivå, maskinvarukonfiguration, antal kärnor, databasstorlek och zonredundans. Läs mer i Prissättning för Azure SQL Database.
  • Azure Cache for Redis skapas på Basic-nivån med den minsta cachestorleken. Det finns en liten kostnad som är associerad med den här nivån. Du kan skala upp den till högre prestandanivåer för högre tillgänglighet, klustring och andra funktioner. Se Priser för Azure Cache for Redis.
  • Det virtuella nätverket debiteras inte om du inte konfigurerar extra funktioner, till exempel peering. Se Priser för Azure Virtual Network.
  • Den privata DNS-zonen medför en liten avgift. Se Priser för Azure DNS.

Hur gör jag för att ansluta till Azure SQL Database-servern som skyddas bakom det virtuella nätverket med andra verktyg?

  • För grundläggande åtkomst från ett kommandoradsverktyg kan du köra sqlcmd från appens SSH-terminal. Appens container levereras inte med sqlcmd, så du måste installera den manuellt. Kom ihåg att den installerade klienten inte finns kvar i omstarter av appar.
  • Om du vill ansluta från en SQL Server Management Studio-klient eller från Visual Studio måste datorn finnas i det virtuella nätverket. Det kan till exempel vara en virtuell Azure-dator som är ansluten till ett av undernäten, eller en dator i ett lokalt nätverk som har en plats-till-plats-VPN-anslutning med det virtuella Azure-nätverket.

Hur fungerar utveckling av lokala appar med GitHub Actions?

Ta den autogenererade arbetsflödesfilen från App Service som exempel. Var git push och en startar en ny version och distributionskörning. Från en lokal klon av GitHub-lagringsplatsen får du önskade uppdateringar att skicka den till GitHub. Till exempel:

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

Hur gör jag för att felsöka under GitHub Actions-distributionen?

Om ett steg misslyckas i den autogenererade GitHub-arbetsflödesfilen kan du prova att ändra det misslyckade kommandot för att generera mer utförliga utdata. Du kan till exempel få mer utdata från något av dotnet kommandona genom att lägga till alternativet -v . Checka in och skicka ändringarna för att utlösa en annan distribution till App Service.

Nästa steg

Gå vidare till nästa självstudie för att lära dig hur du skyddar din app med en anpassad domän och ett certifikat.

Eller kolla in andra resurser: