Zelfstudie: een ASP.NET Core- en Azure SQL Database-app bouwen in Azure App Service

Azure App Service biedt een uiterst schaalbare webhostingservice met self-patchfunctie in Azure. In deze zelfstudie ziet u hoe u een ASP.NET Core app maakt en deze verbindt met SQL Database. Wanneer u klaar bent, hebt u een .NET MVC-app die wordt uitgevoerd in App Service op Windows.

Azure App Service biedt een uiterst schaalbare webhostingservice met self-patchfunctie via het Linux-besturingssysteem. Deze zelfstudie laat zien hoe u een ASP.NET Core app maakt en deze verbindt met een SQL Database. Wanneer u klaar bent, hebt u een ASP.NET Core MVC-app die wordt uitgevoerd in App Service op Linux.

app die in App Service wordt uitgevoerd

In deze zelfstudie leert u het volgende:

  • Een SQL-database in Azure maken
  • Verbinding maken een ASP.NET Core-app om te SQL Database
  • De app implementeren in Azure
  • Het gegevensmodel bijwerken en de app opnieuw implementeren
  • Logboeken met diagnostische gegevens vanaf Azure streamen
  • De app in Azure Portal beheren

Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.

Vereisten

Vereisten voor het voltooien van deze zelfstudie:

  • Gebruik de bash-omgeving in Azure Cloud shell.

    Cloud Shell starten in een nieuw venster

  • Installeer de Azure CLI, indien gewenst, om CLI-referentieopdrachten uit te voeren.

    • Als u een lokale installatie gebruikt, meldt u zich aan bij Azure CLI met behulp van de opdracht AZ login. Volg de stappen die worden weergegeven in de terminal, om het verificatieproces te voltooien. Raadpleeg Aanmelden bij de Azure CLI voor aanvullende aanmeldingsopties.

    • Installeer de Azure CLI-extensie bij het eerste gebruik, wanneer u hierom wordt gevraagd. Raadpleeg Extensies gebruiken met Azure CLI voor meer informatie over extensies.

    • Voer az version uit om de geïnstalleerde versie en afhankelijke bibliotheken te vinden. Voer az upgrade uit om te upgraden naar de nieuwste versie.

Lokale ASP.NET Core-app maken

In deze stap stelt u het lokale ASP.NET Core-project in.

De voorbeeldtoepassing klonen

  1. Voer in het terminalvenster de opdracht cd naar een werkmap uit.

  2. Voer de volgende opdrachten uit om de voorbeeldopslagplaats te klonen en de hoofdmap ervan te wijzigen.

    git clone https://github.com/azure-samples/dotnetcore-sqldb-tutorial
    cd dotnetcore-sqldb-tutorial
    

    Het voorbeeldproject bevat een eenvoudige CRUD-app (create-read-update-delete) die gebruikmaakt van Entity Framework Core.

  3. Zorg ervoor dat de standaard branch main is.

    git branch -m main
    

    Tip

    De naamswijziging van de vertakking is niet vereist door App Service. Omdat veel opslagplaatsen hun standaardvertakking wijzigen in (zie Implementatievertakking wijzigen), laat deze zelfstudie u echter ook zien hoe u een opslagplaats main implementeert vanuit main .

De toepassing uitvoeren

  1. Voer de volgende opdrachten uit om de vereiste pakketten te installeren, databasemigraties uit te voeren en de toepassing te starten.

    dotnet tool install -g dotnet-ef
    dotnet ef database update
    dotnet run
    
  2. Ga naar http://localhost:5000 in een browser. Selecteer de koppeling Nieuwe maken en maak enkele taakitems.

    is verbonden met SQL Database

  3. Druk op Ctrl+C in de terminal als u ASP.NET Core wilt stoppen.

SQL-productiedatabase maken

In deze stap maakt u een SQL-database in Azure. Als de app is geïmplementeerd in Azure, wordt deze cloud-database gebruikt.

Voor SQL Database wordt in deze zelfstudie gebruikgemaakt van Azure SQL Database.

Een resourcegroep maken

Een resourcegroep is een logische container waarin Azure-resources, zoals web-apps, databases en opslagaccounts, worden geïmplementeerd en beheerd. U kunt bijvoorbeeld later de hele resourcegroep in één stap verwijderen.

Maak een resourcegroep in Cloud Shell met de opdracht az group create. In het volgende voorbeeld wordt een resourcegroep met de naam myResourceGroup gemaakt op de locatie Europa - west. Als u alle ondersteunde locaties voor App Service in de Gratis laag wilt zien, voert u de opdracht az appservice list-locations --sku FREE uit.

az group create --name myResourceGroup --location "West Europe"

In het algemeen maakt u een resourcegroep en resources in een regio bij u in de buurt.

Wanneer de opdracht is voltooid, laat een JSON-uitvoer u de eigenschappen van de resource-groep zien.

Een logische SQL Database-server maken

Maak een logische Azure SQL Database-server in Cloud Shell met de opdracht az sql server create.

Vervang de tijdelijke aanduiding <server-name> door een unieke SQL Database-naam. Deze naam wordt gebruikt als onderdeel van het globaal unieke SQL Database eindpunt <server-name>.database.windows.net. Geldige tekens zijn a-z, 0-9, -. Vervang tevens <db-username> en <db-password> door een zelfgekozen gebruikersnaam en wachtwoord.

az sql server create --name <server-name> --resource-group myResourceGroup --location "West Europe" --admin-user <db-username> --admin-password <db-password>

Wanneer de logische SQL Database-server wordt gemaakt, toont de Azure CLI informatie die lijkt op het volgende voorbeeld:

{
  "administratorLogin": "<db-username>",
  "administratorLoginPassword": null,
  "fullyQualifiedDomainName": "<server-name>.database.windows.net",
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Sql/servers/<server-name>",
  "identity": null,
  "kind": "v12.0",
  "location": "westeurope",
  "name": "<server-name>",
  "resourceGroup": "myResourceGroup",
  "state": "Ready",
  "tags": null,
  "type": "Microsoft.Sql/servers",
  "version": "12.0"
}

Een serverfirewallregel configureren

  1. Maak een firewallregel op Azure SQL Database-serverniveau met de opdracht az sql server firewall create. Als zowel het IP-beginadres als het IP-eindadres zijn ingesteld op 0.0.0.0, wordt de firewall alleen geopend voor andere Azure-resources.

    az sql server firewall-rule create --resource-group myResourceGroup --server <server-name> --name AllowAzureIps --start-ip-address 0.0.0.0 --end-ip-address 0.0.0.0
    

    Tip

    U kunt uw firewallregel nog beperkender maken door alleen de uitgaande IP-adressen te gebruiken die in uw app worden gebruikt.

  2. Voer in Cloud Shell de opdracht opnieuw uit om toegang vanaf uw lokale computer mogelijk te maken door <your-ip-address> te vervangen door uw lokale IPv4 IP-adres.

    az sql server firewall-rule create --name AllowLocalClient --server <server-name> --resource-group myResourceGroup --start-ip-address=<your-ip-address> --end-ip-address=<your-ip-address>
    

Een database maken

Maak een database met een prestatieniveau van S0 op de server met de opdracht az sql db create.

az sql db create --resource-group myResourceGroup --server <server-name> --name coreDB --service-objective S0

Gegevens connection string

Haal de verbindingsreeks op met behulp van de opdracht az sql db show-connection-string.

az sql db show-connection-string --client ado.net --server <server-name> --name coreDB

Vervang in de uitvoer van de opdracht <username> en <password> door de databasebeheerdersreferenties die u eerder hebt gebruikt.

Dit is de connection string voor uw ASP.NET Core app. Kopieer deze voor later gebruik.

De app configureren om verbinding te maken met de productiedatabase

Open Startup.cs in de lokale opslagplaats en zoek de volgende code:

services.AddDbContext<MyDatabaseContext>(options =>
        options.UseSqlite("Data Source=localdatabase.db"));

Vervang deze door de volgende code.

services.AddDbContext<MyDatabaseContext>(options =>
        options.UseSqlServer(Configuration.GetConnectionString("MyDbConnection")));

Belangrijk

Voor productie-apps die u wilt uitbreiden, volgt u de best practices in toepassen van migraties in productie.

Databasemigraties naar de productiedatabase uitvoeren

Uw app maakt momenteel verbinding met een lokale Sqlite-database. Nu u een Azure SQL Database hebt geconfigureerd, maakt u de eerste migratie opnieuw om deze als doel te gebruiken.

Voer vanuit de hoofdmap van de opslagplaats de volgende opdrachten uit. Vervang <connection-string> met de verbindingsreeks die u eerder hebt gemaakt.

# Delete old migrations
rm -r Migrations
# Recreate migrations with UseSqlServer (see previous snippet)
dotnet ef migrations add InitialCreate

# Set connection string to production database
# PowerShell
$env:ConnectionStrings:MyDbConnection="<connection-string>"
# CMD (no quotes)
set ConnectionStrings:MyDbConnection=<connection-string>
# Bash (no quotes)
export ConnectionStrings__MyDbConnection=<connection-string>

# Run migrations
dotnet ef database update

De app uitvoeren met de nieuwe configuratie

  1. Nu de databasemigraties worden uitgevoerd op de productiedatabase, test u uw app door deze opdracht uit te voeren:

    dotnet run
    
  2. Ga naar http://localhost:5000 in een browser. Selecteer de koppeling Nieuwe maken en maak enkele taakitems. Uw app leest en schrijft nu gegevens van en naar de productiedatabase.

  3. Voer uw lokale wijzigingen door en voer de app door naar de Git-opslagplaats.

    git add .
    git commit -m "connect to SQLDB in Azure"
    

U bent nu klaar om uw code te implementeren.

App in Azure implementeren

In deze stap implementeert u de SQL Database verbonden ASP.NET Core toepassing naar App Service.

Lokale Git-implementatie configureren

FTP en lokale Git kunnen worden geïmplementeerd in een Azure-web-app met behulp van een implementatiegebruikers. Zodra u deze implementatiegebruiker hebt gemaakt, kunt u deze voor al uw Azure-implementaties gebruiken. Uw gebruikersnaam en wachtwoord voor implementatie op accountniveau verschillen van de referenties voor uw Azure-abonnement.

Als u de implementatiegebruiker wilt configureren, voert u de opdracht az webapp deployment user set uit in Azure Cloud Shell. Vervang <username> en <password> door de gebruikersnaam en het wachtwoord van de gebruiker van de implementatie.

  • De gebruikersnaam moet uniek zijn binnen Azure en voor lokale Git-pushes en mag het symbool '@' niet bevatten.
  • Het wachtwoord moet ten minste acht tekens lang zijn en minimaal twee van de volgende drie typen elementen bevatten: letters, cijfers en symbolen.
az webapp deployment user set --user-name <username> --password <password>

De JSON-uitvoer toont het wachtwoord als null. Als er een 'Conflict'. Details: 409-fout optreedt, wijzigt u de gebruikersnaam. Als er een 'Bad Request'. Details: 400-fout optreedt, kiest u een sterker wachtwoord.

Noteer uw gebruikersnaam en wachtwoord om te gebruiken bij het implementeren van uw web-apps.

Een App Service-plan maken

Maak in Cloud Shell een App Service-plan met de opdracht az appservice plan create.

In het volgende voorbeeld wordt een App Service-plan gemaakt met de naam myAppServicePlan en de prijscategorie Gratis:

az appservice plan create --name myAppServicePlan --resource-group myResourceGroup --sku FREE

Wanneer het App Service-plan is gemaakt, toont de Azure CLI soortgelijke informatie als in het volgende voorbeeld:

{ 
  "adminSiteName": null,
  "appServicePlanName": "myAppServicePlan",
  "geoRegion": "West Europe",
  "hostingEnvironmentProfile": null,
  "id": "/subscriptions/0000-0000/resourceGroups/myResourceGroup/providers/Microsoft.Web/serverfarms/myAppServicePlan",
  "kind": "app",
  "location": "West Europe",
  "maximumNumberOfWorkers": 1,
  "name": "myAppServicePlan",
  < JSON data removed for brevity. >
  "targetWorkerSizeId": 0,
  "type": "Microsoft.Web/serverfarms",
  "workerTierName": null
} 

Maak in Cloud Shell een App Service-plan met de opdracht az appservice plan create.

In het volgende voorbeeld wordt een App Service-plan gemaakt met de naam myAppServicePlan en de prijscategorie Gratis:

az appservice plan create --name myAppServicePlan --resource-group myResourceGroup --sku FREE --is-linux

Wanneer het App Service-plan is gemaakt, toont de Azure CLI soortgelijke informatie als in het volgende voorbeeld:

{ 
  "freeOfferExpirationTime": null,
  "geoRegion": "West Europe",
  "hostingEnvironmentProfile": null,
  "id": "/subscriptions/0000-0000/resourceGroups/myResourceGroup/providers/Microsoft.Web/serverfarms/myAppServicePlan",
  "kind": "linux",
  "location": "West Europe",
  "maximumNumberOfWorkers": 1,
  "name": "myAppServicePlan",
  < JSON data removed for brevity. >
  "targetWorkerSizeId": 0,
  "type": "Microsoft.Web/serverfarms",
  "workerTierName": null
} 

Een webtoepassing maken

Een web-app maken in het App Service-plan myAppServicePlan.

In Cloud Shell kunt u de opdracht az webapp create gebruiken. Vervang in het volgende voorbeeld <app-name> door een unieke naam (geldige tekens zijn a-z, 0-9, en -).

az webapp create --resource-group myResourceGroup --plan myAppServicePlan --name <app-name> --deployment-local-git

Wanneer de web-app is gemaakt, toont de Azure CLI soortgelijke uitvoer als in het volgende voorbeeld:

Local git is configured with url of 'https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git'
{
  "availabilityState": "Normal",
  "clientAffinityEnabled": true,
  "clientCertEnabled": false,
  "clientCertExclusionPaths": null,
  "cloningInfo": null,
  "containerSize": 0,
  "dailyMemoryTimeQuota": 0,
  "defaultHostName": "<app-name>.azurewebsites.net",
  "deploymentLocalGitUrl": "https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git",
  "enabled": true,
  < JSON data removed for brevity. >
}

Notitie

De URL van de externe Git wordt weergegeven in de eigenschap deploymentLocalGitUrl, met de indeling https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git. Sla deze URL op, want u hebt deze later nodig.

Een web-app maken in het App Service-plan myAppServicePlan.

In Cloud Shell kunt u de opdracht az webapp create gebruiken. Vervang in het volgende voorbeeld <app-name> door een unieke naam (geldige tekens zijn a-z, 0-9, en -). De runtime is ingesteld op DOTNET|5.0. Voer az webapp list-runtimes --linux uit als u alle ondersteunde runtimes wilt zien.

az webapp create --resource-group myResourceGroup --plan myAppServicePlan --name <app-name> --runtime 'DOTNET|5.0' --deployment-local-git

Wanneer de web-app is gemaakt, toont de Azure CLI soortgelijke uitvoer als in het volgende voorbeeld:

Local git is configured with url of 'https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git'
{
  "availabilityState": "Normal",
  "clientAffinityEnabled": true,
  "clientCertEnabled": false,
  "cloningInfo": null,
  "containerSize": 0,
  "dailyMemoryTimeQuota": 0,
  "defaultHostName": "<app-name>.azurewebsites.net",
  "deploymentLocalGitUrl": "https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git",
  "enabled": true,
  < JSON data removed for brevity. >
}

U hebt een lege web-app gemaakt in een Linux-container, met Git-implementatie ingeschakeld.

Notitie

De URL van de externe Git wordt weergegeven in de eigenschap deploymentLocalGitUrl, met de indeling https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git. Sla deze URL op, want u hebt deze later nodig.

Verbindingsreeks configureren

Als u verbindingsreeksen voor de Azure-app wilt instellen, gebruikt u de opdracht az webapp config appsettings set in Cloud Shell. In de volgende opdracht vervangt u <app-name> en de parameter <connection-string> door de eerder gemaakte verbindingsreeks.

az webapp config connection-string set --resource-group myResourceGroup --name <app-name> --settings MyDbConnection='<connection-string>' --connection-string-type SQLAzure

In ASP.NET Core kunt u deze benoemde verbindingsreeks (MyDbConnection) gebruiken met het standaardpatroon, zoals elke verbindingsreeks die wordt opgegeven in appsettings.json. In dit geval wordt MyDbConnection ook gedefinieerd in uw appsettings.json. Bij het uitvoeren in App Service heeft de in App Service gedefinieerde verbindingsreeks voorrang op de verbindingsreeks die wordt gedefinieerd in uw appsettings.json. De code gebruikt de waarde uit appsettings.json tijdens de lokale ontwikkeling, en dezelfde code gebruikt de waarde van App Service wanneer deze is geïmplementeerd.

Zie De app configureren om verbinding te maken met de productiedatabase als u wilt zien hoe in uw code naar de verbindingsreeks wordt verwezen.

Pushen naar Azure vanaf Git

  1. Omdat u de vertakking implementeert, moet u de standaardimplementatievertakking voor uw main App Service-app instellen main op (zie Implementatievertakking wijzigen). Stel in Cloud Shell DEPLOYMENT_BRANCH app-instelling in met de opdracht az webapp config appsettings set .

    az webapp config appsettings set --name <app-name> --resource-group myResourceGroup --settings DEPLOYMENT_BRANCH='main'
    
  2. Voeg, eenmaal terug in het lokale terminalvenster, een externe Azure-instantie toe aan uw lokale Git-opslagplaats. Vervang <deploymentLocalGitUrl-from-create-step> door de URL van de externe Git-instantie die u hebt opgeslagen bij Een web-app maken.

    git remote add azure <deploymentLocalGitUrl-from-create-step>
    
  3. Push naar de externe Azure-instantie om uw app te implementeren met de volgende opdracht. Wanneer Git Credential Manager u om referenties vraagt, geeft u de referenties op die u hebt gemaakt in Een implementatiegebruiker configureren, en niet de referenties die u gebruikt om u aan te melden bij de Azure-portal.

    git push azure main
    

    Het kan enkele minuten duren voor deze opdracht is uitgevoerd. De opdracht geeft informatie weer die lijkt op het volgende voorbeeld:

   Enumerating objects: 268, done.
   Counting objects: 100% (268/268), done.
   Compressing objects: 100% (171/171), done.
   Writing objects: 100% (268/268), 1.18 MiB | 1.55 MiB/s, done.
   Total 268 (delta 95), reused 251 (delta 87), pack-reused 0
   remote: Resolving deltas: 100% (95/95), done.
   remote: Updating branch 'main'.
   remote: Updating submodules.
   remote: Preparing deployment for commit id '64821c3558'.
   remote: Generating deployment script.
   remote: Project file path: .\DotNetCoreSqlDb.csproj
   remote: Generating deployment script for ASP.NET MSBuild16 App
   remote: Generated deployment script files
   remote: Running deployment command...
   remote: Handling ASP.NET Core Web Application deployment with MSBuild16.
   remote: .
   remote: .
   remote: .
   remote: Finished successfully.
   remote: Running post deployment command(s)...
   remote: Triggering recycle (preview mode disabled).
   remote: App container will begin restart within 10 seconds.
   To https://<app-name>.scm.azurewebsites.net/<app-name>.git
    * [new branch]      main -> main
   
   Enumerating objects: 273, done.
   Counting objects: 100% (273/273), done.
   Delta compression using up to 4 threads
   Compressing objects: 100% (175/175), done.
   Writing objects: 100% (273/273), 1.19 MiB | 1.85 MiB/s, done.
   Total 273 (delta 96), reused 259 (delta 88)
   remote: Resolving deltas: 100% (96/96), done.
   remote: Deploy Async
   remote: Updating branch 'main'.
   remote: Updating submodules.
   remote: Preparing deployment for commit id 'cccecf86c5'.
   remote: Repository path is /home/site/repository
   remote: Running oryx build...
   remote: Build orchestrated by Microsoft Oryx, https://github.com/Microsoft/Oryx
   remote: You can report issues at https://github.com/Microsoft/Oryx/issues
   remote: .
   remote: .
   remote: .
   remote: Done.
   remote: Running post deployment command(s)...
   remote: Triggering recycle (preview mode disabled).
   remote: Deployment successful.
   remote: Deployment Logs : 'https://<app-name>.scm.azurewebsites.net/newui/jsonviewer?view_url=/api/deployments/cccecf86c56493ffa594e76ea1deb3abb3702d89/log'
   To https://<app-name>.scm.azurewebsites.net/<app-name>.git
    * [new branch]      main -> main
   

Naar de Azure-app bladeren

  1. Blader in de webbrowser naar de geïmplementeerde app.

    http://<app-name>.azurewebsites.net
    
  2. Voeg enkele taakitems toe.

    app die in App Service wordt uitgevoerd

Gefeliciteerd! U een gegevensgestuurde app ASP.NET Core in App Service.

Lokaal bijwerken en opnieuw implementeren

In deze stap wijzigt u het databaseschema en publiceert u het in Azure.

Gegevensmodel bijwerken

Open Models/Todo.cs in the code-editor. Voeg de volgende eigenschap toe aan de klasse ToDo:

public bool Done { get; set; }

Databasemigraties opnieuw uitvoeren

Voer enkele opdrachten uit om de productiedatabase bij te werken.

dotnet ef migrations add AddProperty
dotnet ef database update

Notitie

Als u een nieuw terminalvenster opent, moet u de verbindingsreeks in de terminal instellen op de productiedatabase, zoals u hebt gedaan in Databasemigraties naar de productiedatabase uitvoeren.

Nieuwe eigenschap gebruiken

Breng enkele wijzigingen aan de code aan zodat de eigenschap Done kan worden gebruikt. Om deze zelfstudie eenvoudig te houden, wijzigt u eerst de weergaven Index en Create om de eigenschap in actie te zien.

  1. Open Controllers/TodosController.cs.

  2. Zoek de methode Create([Bind("ID,Description,CreatedDate")] Todo todo) en voeg Done toe aan de lijst met eigenschappen in het attribuut Bind. Als u klaar bent, ziet uw methode Create() er uit als de onderstaande code:

    public async Task<IActionResult> Create([Bind("ID,Description,CreatedDate,Done")] Todo todo)
    
  3. Open Views/Todos/Create.cshtml.

  4. In de Razor-code zou u een <div class="form-group">-element voor Description moeten zien en vervolgens een ander element <div class="form-group"> voor CreatedDate. Voeg direct na deze twee elementen een ander element <div class="form-group"> voor Done toe:

    <div class="form-group">
        <label asp-for="Done" class="col-md-2 control-label"></label>
        <div class="col-md-10">
            <input asp-for="Done" class="form-control" />
            <span asp-validation-for="Done" class="text-danger"></span>
        </div>
    </div>
    
  5. Open Views/Todos/Index.cshtml.

  6. Zoek het lege element <th></th>. Vlak boven dit element voegt u de volgende Razor-code toe:

    <th>
        @Html.DisplayNameFor(model => model.Done)
    </th>
    
  7. Zoek het element <td> dat de taghelpers voor asp-action bevat. Vlak boven dit element voegt u de volgende Razor-code toe:

    <td>
        @Html.DisplayFor(modelItem => item.Done)
    </td>
    

Meer hebt u niet nodig om de wijzigingen in de weergaven Index en Create te zien.

De wijzigingen lokaal testen

  1. Voer de app lokaal uit.

    dotnet run
    

    Notitie

    Als u een nieuw terminalvenster opent, moet u de verbindingsreeks in de terminal instellen op de productiedatabase, zoals u hebt gedaan in Databasemigraties naar de productiedatabase uitvoeren.

  2. Ga in de browser naar http://localhost:5000/. U kunt nu een taakitem toevoegen en Gereed aanvinken. Het moet nu als een voltooid taakitem worden weergegeven op uw startpagina. In de weergave Edit wordt het veld Done niet getoond omdat u de weergave Edit niet hebt gewijzigd.

Wijzigingen publiceren in Azure

  1. Commit your changes to Git and push it to your App Service app.

    git add .
    git commit -m "added done field"
    git push azure main
    
  2. Nadat git push is voltooid, gaat u naar de App Service-app en probeert u een taakitem toe te voegen en selecteert u Gereed.

    Azure-app na Code First Migration

Alle bestaande taakitems worden nog steeds weergegeven. Als u de ASP.NET Core-app opnieuw publiceert, blijven bestaande gegevens in SQL Database behouden. En met Entity Framework Core Migrations wordt alleen het gegevensschema gewijzigd. De bestaande gegevens blijven ongewijzigd.

Diagnostische logboeken streamen

Terwijl uw ASP.NET Core-app wordt uitgevoerd in Azure App Service, kunt u de consolelogboeken doorsluizen naar de Cloud Shell. Op die manier krijgt u de dezelfde diagnostische berichten om toepassingsfouten op te sporen.

Het voorbeeldproject volgt al de richtlijnen voor de Azure App Service logboekregistratieprovider met twee configuratiewijzigingen:

  • Bevat een verwijzing naar Microsoft.Extensions.Logging.AzureAppServices in DotNetCoreSqlDb.csproj.
  • Roept loggerFactory.AddAzureWebAppDiagnostics() in Program.cs aan.
  1. Om het logboekniveau van ASP.NET Core in App Service te wijzigen van het standaardniveau Error in Information, gebruikt u de opdracht az webapp log config in de Cloud Shell.

    az webapp log config --name <app-name> --resource-group myResourceGroup --application-logging filesystem --level information
    

    Notitie

    Het logboekniveau van het project is al ingesteld op Information in appsettings.json.

  2. Gebruik voor het starten van logboekstreaming de opdracht az webapp log tail in de Cloud Shell.

    az webapp log tail --name <app-name> --resource-group myResourceGroup
    
  3. Nadat logboekstreaming is gestart, vernieuwt u de Azure-app in de browser om wat webverkeer te genereren. U kunt nu zien dat consolelogboeken worden doorgegeven aan de terminal. Als u de consolelogboeken niet meteen ziet, probeert u het opnieuw na 30 seconden.

  4. U kunt op elk gewenst moment Ctrl+C typen om te stoppen met logboekstreaming.

Zie Logboekregistratie in .NET ASP.NET Core meer informatie over het aanpassen van de logboeken.

Resources opschonen

In de voorgaande stappen hebt u Azure-resources in een resourcegroep gemaakt. Als u deze resources niet meer nodig denkt te hebben, verwijdert u de resourcegroep door de volgende opdracht in Cloud Shell uit te voeren:

az group delete --name myResourceGroup

Het kan een minuut duren voordat deze opdracht is uitgevoerd.

Volgende stappen

Wat u hebt geleerd:

  • Een SQL-database in Azure maken
  • Verbinding maken app ASP.NET Core om te SQL Database
  • De app implementeren in Azure
  • Het gegevensmodel bijwerken en de app opnieuw implementeren
  • Logboeken vanaf Azure naar uw terminal streamen
  • De app in Azure Portal beheren

Ga door naar de volgende zelfstudie om te leren hoe u een aangepaste DNS-naam aan uw app kunt toewijzen.

U kunt ook andere resources bekijken: