Dela via


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 8.0-app är processen densamma för andra versioner av ASP.NET Core.

I den här självstudien lär du dig att:

  • Skapa en säker App Service-, SQL Database- och Redis-cachearkitektur som standard
  • Distribuera en exempeldatadriven ASP.NET Core-app
  • Använda niska veze och appinställningar
  • Generera databasschema genom att ladda upp ett migreringspaket
  • strömma diagnostikloggar från Azure
  • hantera appen i Azure-portalen.
  • Etablera och distribuera med hjälp av Azure Developer CLI

Förutsättningar

  • Ett Azure-konto med en aktiv prenumeration. Om du inte har ett Azure-konto kan du skapa ett kostnadsfritt.
  • Ett GitHub-konto. du kan också få en gratis.
  • Kunskap om ASP.NET Core-utveckling.
  • (Valfritt) Prova GitHub Copilot, ett GitHub Copilot-konto. Det finns en kostnadsfri utvärderingsversion på 30 dagar.

1. Kör exemplet

Först konfigurerar du en exempeldatadriven app som utgångspunkt. Exempellagringsplatsen innehåller för enkelhetens skull en konfiguration av utvecklingscontainer. Utvecklingscontainern har allt du behöver för att utveckla ett program, inklusive databasen, cachen och alla miljövariabler som krävs av exempelprogrammet. Utvecklingscontainern kan köras i ett GitHub-kodområde, vilket innebär att du kan köra exemplet på valfri dator med en webbläsare.

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/fork.
  3. Avmarkera Kopiera endast huvudgrenen. Du vill ha alla grenar.
  4. Välj Skapa förgrening.

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

Steg 2: I GitHub-förgreningen:

  1. Välj main>starter-no-infra för startgrenen. Den här grenen innehåller bara exempelprojektet och inga Azure-relaterade filer eller konfigurationer.
  2. Välj Kod>Skapa kodområde på main. Det tar några minuter att konfigurera kodområdet.

En skärmbild som visar hur du skapar ett kodområde i GitHub.

Steg 3: I kodområdesterminalen:

  1. Kör databasmigreringar med dotnet ef database update.
  2. Kör appen med dotnet run.
  3. När du ser meddelandet Your application running on port 5093 is available.väljer du Öppna i webbläsare. Du bör se exempelprogrammet på en ny webbläsarflik. Om du vill stoppa programmet skriver du Ctrl+C.

En skärmbild som visar hur du kör exempelprogrammet i GitHub-kodområdet.

Dricks

Du kan fråga GitHub Copilot om den här lagringsplatsen. Till exempel:

  • @workspace Vad gör det här projektet?
  • @workspace Vad gör mappen .devcontainer?

Har du problem? Kontrollera felsökningsavsnittet.

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: Alla Azure-regioner nära dig.
  3. Namn: msdocs-core-sql-XYZ där XYZ är tre slumpmässiga tecken. Användarnamnet måste vara unikt inom Azure.
  4. Körningsstack: .NET 8 (LTS).
  5. Lägg till Azure Cache for Redis?: Ja.
  6. Värdplan: Basic. 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-server: 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.
  • Privata 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 niska veze

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

Steg 1: På sidan App Service går du till den vänstra menyn och väljer Inställningar>Miljövariabler.

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

Steg 2:

  1. Hitta AZURE_REDIS_CONNECTIONSTRING i avsnittet Appinstä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.
  2. Välj Anslutningssträngar och leta upp AZURE_SQL_CONNECTIONSTRING i avsnittet Anslutningssträ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.
  3. Om du vill kan du välja inställningen och se, kopiera eller redigera 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 den vänstra menyn väljer du Distributionsdistributionscenter>.

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

Steg 2: 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 starter-no-infra. Det här är samma gren som du arbetade i med exempelappen, utan några Azure-relaterade filer eller konfigurationer.
  6. Som Autentiseringstyp väljer du Användartilldelad identitet.
  7. I den översta menyn väljer du Spara. App Service checkar in en arbetsflödesfil i den valda GitHub-lagringsplatsen i .github/workflows katalogen. Som standard skapar distributionscentret en användartilldelad identitet för arbetsflödet som ska autentiseras med Hjälp av Microsoft Entra (OIDC-autentisering). Alternativa autentiseringsalternativ finns i Distribuera till App Service med GitHub Actions.

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

Steg 3: Kör i GitHub-kodområdet i exempelgrenen git pull origin starter-no-infra. Detta hämtar den nyligen incheckade arbetsflödesfilen till ditt kodområde.

En skärmbild som visar git-hämtning i ett GitHub-kodområde.

Steg 4 (alternativ 1: med GitHub Copilot):

  1. Starta en ny chattsession genom att välja vyn Chatt och sedan välja +.
  2. Fråga: "@workspace Hur ansluter appen till databasen och cachen?" Copilot kan ge dig en förklaring om klassen och hur den MyDatabaseContext konfigureras i Program.cs.
  3. Fråga: "I produktionsläge vill jag att appen ska använda niska veze som heter AZURE_SQL_CONNECTIONSTRING för databasen och appinställningen med namnet AZURE_REDIS_CONNECTIONSTRING*." Copilot kan ge dig ett kodförslag som liknar det i alternativ 2: utan GitHub Copilot-stegen nedan och till och med be dig att göra ändringen i filen Program.cs.
  4. Öppna Program.cs i utforskaren och lägg till kodförslaget. GitHub Copilot ger dig inte samma svar varje gång, och det är inte alltid korrekt. Du kan behöva ställa fler frågor för att finjustera svaret. Tips finns i Vad kan jag göra med GitHub Copilot i mitt kodområde?

En skärmbild som visar hur du ställer en fråga i en ny GitHub Copilot-chattsession.

Steg 4 (alternativ 2: utan GitHub Copilot):

  1. Öppna Program.cs i utforskaren.
  2. Leta upp den kommenterade koden (raderna 12–21) och ta bort kommentaren. Den här koden ansluter till databasen med hjälp AZURE_SQL_CONNECTIONSTRING av och ansluter till Redis-cachen med hjälp av appinställningen AZURE_REDIS_CONNECTIONSTRING.

En skärmbild som visar ett GitHub-kodområde och filen Program.cs öppnas.

Steg 5 (alternativ 1: med GitHub Copilot):

  1. Öppna .github/workflows/starter-no-infra_msdocs-core-sql-XYZ i utforskaren. Den här filen skapades av guiden Skapa apptjänst.
  2. Markera steget dotnet publish och välj .
  3. Fråga Copilot: "Installera dotnet ef och skapa sedan ett migreringspaket i samma utdatamapp.".
  4. Om förslaget är acceptabelt väljer du Acceptera. GitHub Copilot ger dig inte samma svar varje gång, och det är inte alltid korrekt. Du kan behöva ställa fler frågor för att finjustera svaret. Tips finns i Vad kan jag göra med GitHub Copilot i mitt kodområde?

En skärmbild som visar användningen av GitHub Copilot i en GitHub-arbetsflödesfil.

Steg 5 (alternativ 2: utan GitHub Copilot):

  1. Öppna .github/workflows/starter-no-infra_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 8.*.
  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 -o ${{env.DOTNET_ROOT}}/myapp/migrationsbundle. 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 6:

  1. Välj källkontrolltillägget.
  2. I textrutan skriver du ett incheckningsmeddelande som Configure Azure database and cache connections. Eller välj och låt GitHub Copilot generera ett incheckningsmeddelande åt dig.
  3. Välj Checka in och bekräfta sedan med Ja.
  4. Välj Synkronisera ändringar 1 och bekräfta sedan med OK.

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

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

  1. Välj Loggar. En ny distributionskörning har redan startats från de incheckade ändringarna. Du kan behöva välja Uppdatera för att se den.
  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 8: 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 Lyckades. Det tar ungefär 5 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: Gå tillbaka till App Service-sidan i den vänstra menyn, välj Utvecklingsverktyg>SSH och välj sedan Gå.

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 GitHub-arbetsflödet genererade med kommandot ./migrationsbundle -- --environment Production. Om det lyckas ansluter App Service till SQL Database. Kom ihåg att --environment Production motsvarar de kodändringar som du gjorde i Program.cs.

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

I SSH-sessionen kan endast ändringar av filer i /home sparas utöver omstarter av appar. Ändringar utanför /home sparas inte.

Har du problem? Kontrollera felsökningsavsnittet.

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 Övervaka>App Service-loggar på den vänstra menyn.
  2. Under Programloggning väljer du Filsystem och sedan Spara.

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. :

2. Skapa Azure-resurser och distribuera en exempelapp

I det här steget skapar du Azure-resurserna och distribuerar en exempelapp till App Service i Linux. Stegen som används i den här självstudien skapar en uppsättning säkra resurser som standard som inkluderar App Service, Azure SQL Database och Azure Cache for Redis.

Utvecklingscontainern har redan Azure Developer CLI (AZD).

  1. Från lagringsplatsens rot kör du azd init.

    azd init --template dotnet-app-service-sqldb-infra
    
  2. När du uppmanas att ge följande svar:

    Fråga Svar
    Den aktuella katalogen är inte tom. Vill du initiera ett projekt här i "<din katalog>"? Y
    Vad vill du göra med de här filerna? Behåll mina befintliga filer oförändrade
    Ange ett nytt miljönamn Skriv ett unikt namn. AZD-mallen använder det här namnet som en del av DNS-namnet på din webbapp i Azure (<app-name>.azurewebsites.net). Alfanumeriska tecken och bindestreck tillåts.
  3. Logga in på Azure genom att azd auth login köra kommandot och följa kommandotolken:

    azd auth login
    
  4. Skapa nödvändiga Azure-resurser och distribuera appkoden med azd up kommandot . Följ uppmaningen för att välja önskad prenumeration och plats för Azure-resurserna.

    azd up
    

    Kommandot azd up tar cirka 15 minuter att slutföra (Redis-cachen tar mest tid). Den kompilerar och distribuerar även programkoden, men du ändrar koden senare så att den fungerar med App Service. När den körs innehåller kommandot meddelanden om etablerings- och distributionsprocessen, inklusive en länk till distributionen i Azure. När det är klart visar kommandot även en länk till distributionsprogrammet.

    Den här AZD-mallen innehåller filer (azure.yaml och infra-katalogen ) som genererar en säker arkitektur som standard med följande Azure-resurser:

    • 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-server: 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.
    • Privata DNS-zoner: Aktivera DNS-matchning för databasservern och Redis-cachen i det virtuella nätverket.

Har du problem? Kontrollera felsökningsavsnittet.

3. Kontrollera niska veze

Den AZD-mall som du använder genererade anslutningsvariablerna åt dig redan som appinställningar och matar ut dem till terminalen för din bekvämlighet. Appinställningar är ett sätt att hålla anslutningshemligheter borta från din kodlagringsplats.

  1. I AZD-utdata hittar du inställningarna AZURE_SQL_CONNECTIONSTRING och AZURE_REDIS_CONNECTIONSTRING. För att skydda hemligheter visas endast inställningsnamnen. De ser ut så här i AZD-utdata:

     App Service app has the following connection strings:
    
             - AZURE_SQL_CONNECTIONSTRING
             - AZURE_REDIS_CONNECTIONSTRING
     

    AZURE_SQL_CONNECTIONSTRINGinnehåller niska veze till SQL Database i Azure och AZURE_REDIS_CONNECTIONSTRING innehåller niska veze till Azure Redis-cachen. Du måste använda dem i koden senare.

  2. För att underlätta för dig visar AZD-mallen direktlänken till appens appinställningarssida. Hitta länken och öppna den på en ny webbläsarflik.

Har du problem? Kontrollera felsökningsavsnittet.

4. Ändra exempelkod och distribuera om

  1. Tillbaka i GitHub-kodområdet för din exempelgren startar du en ny chattsession genom att välja chattvyn och sedan välja +.

  2. Fråga: "@workspace Hur ansluter appen till databasen och cachen?" Copilot kan ge dig en förklaring om klassen och hur den MyDatabaseContext konfigureras i Program.cs.

  3. Fråga: "I produktionsläge vill jag att appen ska använda niska veze som heter AZURE_SQL_CONNECTIONSTRING för databasen och appinställningen med namnet AZURE_REDIS_CONNECTIONSTRING*." Copilot kan ge dig ett kodförslag som liknar det i alternativ 2: utan GitHub Copilot-stegen nedan och till och med be dig att göra ändringen i filen Program.cs.

  4. Öppna Program.cs i utforskaren och lägg till kodförslaget.

    GitHub Copilot ger dig inte samma svar varje gång, och det är inte alltid korrekt. Du kan behöva ställa fler frågor för att finjustera svaret. Tips finns i Vad kan jag göra med GitHub Copilot i mitt kodområde?

Innan du distribuerar dessa ändringar måste du fortfarande generera ett migreringspaket.

Har du problem? Kontrollera felsökningsavsnittet.

4. Generera databasschema

Med SQL Database som skyddas av det virtuella nätverket är det enklaste sättet att köra databasmigreringar i en SSH-session med App Service-containern. Men App Service Linux-containrarna har inte .NET SDK, så det enklaste sättet att köra databasmigreringar är att ladda upp ett fristående migreringspaket.

  1. Generera ett migreringspaket för projektet med följande kommando:

    dotnet ef migrations bundle --runtime linux-x64 -o migrationsbundle
    

    Dricks

    Exempelprogrammet (se DotNetCoreSqlDb.csproj) har konfigurerats för att inkludera den här migreringsbundle-filen . azd package Under fasen läggs migreringsbundle till i distributionspaketet.

  2. Distribuera alla ändringar med azd up.

    azd up
    
  3. I azd-utdata letar du upp URL:en för SSH-sessionen och navigerar till den i webbläsaren. Det ser ut så här i utdata:

     Open SSH session to App Service container at: https://<app-name>.scm.azurewebsites.net/webssh/host
     
  4. Kör följande kommandon i SSH-terminalen:

    cd /home/site/wwwroot
    ./migrationsbundle -- --environment Production
    

    Om det lyckas ansluter App Service till databasen. Kom ihåg att --environment Production motsvarar de kodändringar som du gjorde i Program.cs.

I SSH-sessionen kan endast ändringar av filer i /home sparas utöver omstarter av appar. Ändringar utanför /home sparas inte.

Har du problem? Kontrollera felsökningsavsnittet.

6. Bläddra till appen

  1. I AZD-utdata letar du reda på url:en för din app och navigerar till den i webbläsaren. URL:en ser ut så här i AZD-utdata:

     Deploying services (azd deploy)
    
       (✓) Done: Deploying service web
       - Endpoint: https://<app-name>.azurewebsites.net/
     
  2. Lägg till några uppgifter i listan.

    En skärmbild av ASP.NET Core-webbappen med SQL Database som körs i Azure som visar uppgifter.

    Grattis, du kör en webbapp i Azure App Service med säker anslutning till Azure SQL Database.

Har du problem? Kontrollera felsökningsavsnittet.

7. Strömma diagnostikloggar

Azure App Service kan samla in konsolloggar som hjälper dig att diagnostisera problem med ditt program. För enkelhetens skull har AZD-mallen redan aktiverat loggning till det lokala filsystemet och skickar loggarna till en Log Analytics-arbetsyta.

I AZD-utdata hittar du länken för att strömma App Service-loggar och navigera till den i webbläsaren. Länken ser ut så här i AZD-utdata:

Stream App Service logs at: https://portal.azure.com/#@/resource/subscriptions/<subscription-guid>/resourceGroups/<group-name>/providers/Microsoft.Web/sites/<app-name>/logStream

Läs mer om loggning i .NET-appar i serien på Aktivera Azure Monitor OpenTelemetry för .NET-, Node.js-, Python- och Java-program.

Har du problem? Kontrollera felsökningsavsnittet.

8. Rensa resurser

Om du vill ta bort alla Azure-resurser i den aktuella distributionsmiljön kör azd down du och följer anvisningarna.

azd down

Felsökning

Portaldistributionsvyn för Azure SQL Database visar statusen Konflikt

Beroende på din prenumeration och den region du väljer kan distributionsstatusen för Azure SQL Database vara Conflict, med följande meddelande i Åtgärdsinformation:

InternalServerError: An unexpected error occured while processing the request.

Det här felet orsakas troligen av en gräns för din prenumeration för den region du väljer. Prova att välja en annan region för distributionen.

I Azure-portalen visar loggströmsgränssnittet för webbappen nätverksfel

Du kan se det här felet:

Unable to open a connection to your app. This may be due to any network security groups or IP restriction rules that you have placed on your app. To use log streaming, please make sure you are able to access your app directly from your current network.

Detta är vanligtvis ett tillfälligt fel när appen startas först. Vänta några minuter och kontrollera igen.

SSH-sessionen i webbläsaren visar SSH CONN CLOSED

Det tar några minuter innan Linux-containern startas. Vänta några minuter och kontrollera igen.

Portalloggströmsidan visas Connected! men inga loggar

När du har konfigurerat diagnostikloggar startas appen om. Du kan behöva uppdatera sidan för att ändringarna ska börja gälla i webbläsaren.

Vanliga frågor och svar

Hur mycket kostar den här installationen?

Prissättningen för de skapade resurserna ä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 ansluter jag 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 felsöker jag fel 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.

Jag har inte behörighet att skapa en användartilldelad identitet

Se Konfigurera GitHub Actions-distribution från Distributionscenter.

Vad kan jag göra med GitHub Copilot i mitt kodområde?

Du kanske har märkt att GitHub Copilot-chattvyn redan fanns där när du skapade kodområdet. För din bekvämlighet inkluderar vi GitHub Copilot-chatttillägget i containerdefinitionen (se .devcontainer/devcontainer.json). Du behöver dock ett GitHub Copilot-konto (30 dagars kostnadsfri utvärderingsversion tillgänglig).

Några tips när du pratar med GitHub Copilot:

  • I en enda chattsession bygger frågorna och svaren på varandra och du kan justera dina frågor för att finjustera det svar du får.
  • Som standard har GitHub Copilot inte åtkomst till någon fil på lagringsplatsen. Om du vill ställa frågor om en fil öppnar du filen i redigeraren först.
  • Om du vill ge GitHub Copilot åtkomst till alla filer på lagringsplatsen när du förbereder dess svar börjar du din fråga med @workspace. Mer information finns i Use the @workspace agent.
  • I chattsessionen kan GitHub Copilot föreslå ändringar och (med @workspace) även var ändringarna ska utföras, men det är inte tillåtet att göra ändringarna åt dig. Det är upp till dig att lägga till de föreslagna ändringarna och testa dem.

Här är några andra saker du kan säga för att finjustera svaret du får.

  • Jag vill att den här koden endast ska köras i produktionsläge.
  • Jag vill att den här koden endast ska köras i Azure App Service och inte lokalt.
  • Parametern --output-path verkar inte ha stöd.

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: