Samouczek: Tworzenie aplikacji ASP.NET Core i SQL Database w Azure App ServiceTutorial: Build an ASP.NET Core and SQL Database app in Azure App Service

Uwaga

W tym artykule opisano wdrażanie aplikacji w usłudze App Service w systemie Windows.This article deploys an app to App Service on Windows. Aby wdrożyć usługę App Service w systemie Linux, zobacz Tworzenie aplikacji platformy .NET Core i usługi SQL Database w usłudze Azure App Service w systemie Linux.To deploy to App Service on Linux, see Build a .NET Core and SQL Database app in Azure App Service on Linux.

Usługa App Service oferuje wysoce skalowalną i samonaprawialną usługę hostingu w Internecie na platformie Azure.App Service provides a highly scalable, self-patching web hosting service in Azure. W tym samouczku pokazano, jak utworzyć aplikację platformy .NET Core i połączyć ją z usługą SQL Database.This tutorial shows how to create a .NET Core app and connect it to a SQL Database. Po zakończeniu aplikacja MVC platformy .NET Core będzie działać w usłudze App Service.When you're done, you'll have a .NET Core MVC app running in App Service.

aplikacja działająca w usłudze App Service

Omawiane kwestie:What you learn how to:

  • Tworzenie bazy danych SQL Database na platformie AzureCreate a SQL Database in Azure
  • Łączenie aplikacji .NET Core z bazą danych SQL DatabaseConnect a .NET Core app to SQL Database
  • Wdrażanie aplikacji na platformie AzureDeploy the app to Azure
  • Aktualizowanie modelu danych i ponowne wdrażanie aplikacjiUpdate the data model and redeploy the app
  • Strumieniowe przesyłanie dzienników diagnostycznych z platformy AzureStream diagnostic logs from Azure
  • Zarządzanie aplikacją w witrynie Azure PortalManage the app in the Azure portal

Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.If you don't have an Azure subscription, create a free account before you begin.

Wymagania wstępnePrerequisites

W celu ukończenia tego samouczka:To complete this tutorial:

Tworzenie lokalnej aplikacji .NET CoreCreate local .NET Core app

Ten krok umożliwia skonfigurowanie lokalnego projektu platformy .NET Core.In this step, you set up the local .NET Core project.

Klonowanie przykładowej aplikacjiClone the sample application

W oknie terminalu dodaj element cd do katalogu roboczego.In the terminal window, cd to a working directory.

Uruchom następujące polecenia w celu sklonowania przykładowego repozytorium i zmiany jego katalogu głównego.Run the following commands to clone the sample repository and change to its root.

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

Przykładowy projekt zawiera podstawową aplikację CRUD (create-read-update-delete, tworzenie-odczytywanie-aktualizowanie-usuwanie) korzystającą z rozwiązania Entity Framework Core.The sample project contains a basic CRUD (create-read-update-delete) app using Entity Framework Core.

Uruchamianie aplikacjiRun the application

Uruchom następujące polecenia, aby zainstalować wymagane pakiety, uruchom migracje baz danych i uruchom aplikację.Run the following commands to install the required packages, run database migrations, and start the application.

dotnet restore
dotnet ef database update
dotnet run

W przeglądarce przejdź do adresu http://localhost:5000.Navigate to http://localhost:5000 in a browser. Wybierz link Utwórz nowy i utwórz kilka elementów typu zadanie do wykonania.Select the Create New link and create a couple to-do items.

pomyślne połączenie z bazą danych SQL Database

Aby zatrzymać platformę .NET Core w dowolnym momencie, naciśnij kombinację klawiszy Ctrl+C w terminalu.To stop .NET Core at any time, press Ctrl+C in the terminal.

Używanie usługi Azure Cloud ShellUse Azure Cloud Shell

Platforma Azure obsługuje Azure Cloud Shell, interaktywne środowisko powłoki, z którego można korzystać w przeglądarce.Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Do pracy z usługami platformy Azure można używać bash lub PowerShell z Cloud Shell.You can use either Bash or PowerShell with Cloud Shell to work with Azure services. Możesz użyć wstępnie zainstalowanych poleceń Cloud Shell, aby uruchomić kod w tym artykule bez konieczności instalowania niczego w środowisku lokalnym.You can use the Cloud Shell preinstalled commands to run the code in this article without having to install anything on your local environment.

Aby rozpocząć Azure Cloud Shell:To start Azure Cloud Shell:

OpcjaOption Przykład/linkExample/Link
Wybierz pozycję Wypróbuj w prawym górnym rogu bloku kodu.Select Try It in the upper-right corner of a code block. Wybranie przycisku Wypróbuj nie powoduje automatycznego skopiowania kodu do Cloud Shell.Selecting Try It doesn't automatically copy the code to Cloud Shell. Przykład try dla Azure Cloud Shell
Przejdź do https://shell.azure.comlub wybierz przycisk Uruchom Cloud Shell , aby otworzyć Cloud Shell w przeglądarce.Go to https://shell.azure.com, or select the Launch Cloud Shell button to open Cloud Shell in your browser. uruchamiania Cloud Shell w nowym oknieLaunch Cloud Shell in a new window
Wybierz przycisk Cloud Shell w prawym górnym pasku menu w Azure Portal.Select the Cloud Shell button on the top-right menu bar in the Azure portal. Przycisk Cloud Shell w witrynie Azure Portal

Aby uruchomić kod w tym artykule w Azure Cloud Shell:To run the code in this article in Azure Cloud Shell:

  1. Rozpocznij Cloud Shell.Start Cloud Shell.

  2. Aby skopiować kod, wybierz przycisk Kopiuj w bloku kodu.Select the Copy button on a code block to copy the code.

  3. Wklej kod do sesji Cloud Shell, wybierając kolejno pozycje Ctrl+SHIFT+v w systemach Windows i Linux lub wybierając polecenie cmd+SHIFT+v w macOS.Paste the code into the Cloud Shell session by selecting Ctrl+Shift+V on Windows and Linux or by selecting Cmd+Shift+V on macOS.

  4. Wybierz klawisz ENTER , aby uruchomić kod.Select Enter to run the code.

Tworzenie produkcyjnej bazy danych SQL DatabaseCreate production SQL Database

W tym kroku utworzysz bazę danych SQL Database na platformie Azure.In this step, you create a SQL Database in Azure. Aplikacja wdrożona na platformie Azure używa tej bazy danych w chmurze.When your app is deployed to Azure, it uses this cloud database.

W tym samouczku jako baza danych SQL jest używana baza danych Azure SQL Database.For SQL Database, this tutorial uses Azure SQL Database.

Utwórz grupę zasobówCreate a resource group

Grupa zasobów to logiczny kontener przeznaczony do wdrażania zasobów platformy Azure, takich jak aplikacje internetowe, bazy danych i konta magazynu, oraz zarządzania nimi.A resource group is a logical container into which Azure resources like web apps, databases, and storage accounts are deployed and managed. Na przykład można później usunąć całą grupę zasobów w jednym prostym kroku.For example, you can choose to delete the entire resource group in one simple step later.

W usłudze Cloud Shell utwórz grupę zasobów za pomocą polecenia az group create.In the Cloud Shell, create a resource group with the az group create command. Poniższy przykład obejmuje tworzenie grupy zasobów o nazwie myResourceGroup w lokalizacji West Europe (Europa Zachodnia).The following example creates a resource group named myResourceGroup in the West Europe location. Aby wyświetlić wszystkie obsługiwane lokalizacje dla usługi App Service w warstwie Bezpłatna, uruchom polecenie az appservice list-locations --sku FREE.To see all supported locations for App Service in Free tier, run the az appservice list-locations --sku FREE command.

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

Zasadniczo grupy zasobów i zasoby są tworzone w pobliskim regionie.You generally create your resource group and the resources in a region near you.

Po zakończeniu działania polecenia zostaną wyświetlone dane wyjściowe JSON z właściwościami grupy zasobów.When the command finishes, a JSON output shows you the resource group properties.

Tworzenie serwera logicznego bazy danych SQL DatabaseCreate a SQL Database logical server

W usłudze Cloud Shell utwórz serwer logiczny usługi SQL Database za pomocą polecenia az sql server create.In the Cloud Shell, create a SQL Database logical server with the az sql server create command.

Zastąp symbol zastępczy <nazwa_serwera> unikatową nazwą bazy danych SQL Database.Replace the <server_name> placeholder with a unique SQL Database name. Ta nazwa jest używana jako część punktu końcowego bazy danych SQL Database, <server_name>.database.windows.net, więc nazwa musi być unikatowa na wszystkich serwerach logicznych platformy Azure.This name is used as the part of the SQL Database endpoint, <server_name>.database.windows.net, so the name needs to be unique across all logical servers in Azure. Nazwa może zawierać tylko małe litery, cyfry oraz znak łącznika (-) i musi się składać z 3–50 znaków.The name must contain only lowercase letters, numbers, and the hyphen (-) character, and must be between 3 and 50 characters long. Ponadto zastąp elementy <nazwa_bazy_danych> i <hasło_bazy_danych> wybraną nazwą użytkownika i hasłem.Also, replace <db_username> and <db_password> with a username and password of your choice.

az sql server create --name <server_name> --resource-group myResourceGroup --location "West Europe" --admin-user <db_username> --admin-password <db_password>

Po utworzeniu serwera logicznego SQL Database w interfejsie wiersza polecenia platformy Azure zostaną wyświetlone informacje podobne do następujących:When the SQL Database logical server is created, the Azure CLI shows information similar to the following example:

{
  "administratorLogin": "sqladmin",
  "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"
}

Konfigurowanie reguły zapory serweraConfigure a server firewall rule

Utwórz regułę zapory na poziomie serwera usługi Azure SQL Database za pomocą polecenia az sql server firewall create.Create an Azure SQL Database server-level firewall rule using the az sql server firewall create command. Po ustawieniu początkowego i końcowego adresu IP na 0.0.0.0 zapora będzie otwierana tylko dla innych zasobów platformy Azure.When both starting IP and end IP are set to 0.0.0.0, the firewall is only opened for other Azure resources.

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

Porada

Reguła zapory może być jeszcze bardziej restrykcyjna, jeśli zostaną użyte tylko adresy IP dla ruchu wychodzącego używane przez aplikację.You can be even more restrictive in your firewall rule by using only the outbound IP addresses your app uses.

Tworzenie bazy danychCreate a database

Utwórz bazę danych o poziomie wydajności S0 na serwerze za pomocą polecenia az sql db create.Create a database with an S0 performance level in the server using the az sql db create command.

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

Tworzenie parametrów połączeniaCreate connection string

Zastąp poniższe parametry użytym wcześniej ciągiem <nazwa_serwera> , <nazwa_bazy_danych> i <hasło_bazy_danych> .Replace the following string with the <server_name>, <db_username>, and <db_password> you used earlier.

Server=tcp:<server_name>.database.windows.net,1433;Database=coreDB;User ID=<db_username>;Password=<db_password>;Encrypt=true;Connection Timeout=30;

To są parametry połączenia dla aplikacji .NET Core.This is the connection string for your .NET Core app. Skopiuj je w celu późniejszego użycia.Copy it for use later.

Wdrażanie aplikacji na platformie AzureDeploy app to Azure

W tym kroku wdrożysz aplikację .NET Core połączoną z bazą danych SQL Database w usłudze App Service.In this step, you deploy your SQL Database-connected .NET Core application to App Service.

Konfigurowanie lokalnego wdrożenia narzędzia GitConfigure local git deployment

FTP i lokalnego narzędzia Git można wdrożyć aplikację internetową platformy Azure przy użyciu użytkownika wdrożenia.FTP and local Git can deploy to an Azure web app by using a deployment user. Po skonfigurowaniu użytkownika wdrożenia, można użyć go we wszystkich wdrożeniach platformy Azure.Once you configure your deployment user, you can use it for all your Azure deployments. Nazwy wdrażania na poziomie konta użytkownika i hasła różnią się od poświadczeń subskrypcji platformy Azure.Your account-level deployment username and password are different from your Azure subscription credentials.

Aby skonfigurować użytkownika wdrożenia, uruchom Ustaw użytkownika wdrożenia aplikacji sieci Web az polecenia w usłudze Azure Cloud Shell.To configure the deployment user, run the az webapp deployment user set command in Azure Cloud Shell. Zastąp <username > i <hasło > Nazwa użytkownika wdrożenia użytkownika i hasłem.Replace <username> and <password> with a deployment user username and password.

  • Nazwa użytkownika musi być unikatowa na platformie Azure, i dla lokalnego narzędzia Git nie może zawierać wypchnięciom, ' @' symboli.The username must be unique within Azure, and for local Git pushes, must not contain the ‘@’ symbol.
  • Hasło musi mieć co najmniej ośmiu znaków i zawierać dwa z następujących trzech elementów: litery, cyfry i symbole.The password must be at least eight characters long, with two of the following three elements: letters, numbers, and symbols.
az webapp deployment user set --user-name <username> --password <password>

Dane wyjściowe JSON zawiera hasło jako null.The JSON output shows the password as null. Jeśli wystąpił błąd 'Conflict'. Details: 409, zmień nazwę użytkownika.If you get a 'Conflict'. Details: 409 error, change the username. Jeśli wystąpił błąd 'Bad Request'. Details: 400, użyj silniejszego hasła.If you get a 'Bad Request'. Details: 400 error, use a stronger password.

Zapisz nazwę użytkownika i hasło służące do wdrażania aplikacji sieci web.Record your username and password to use to deploy your web apps.

Tworzenie planu usługi App ServiceCreate an App Service plan

W usłudze Cloud Shell utwórz plan usługi App Service za pomocą polecenia az appservice plan create.In the Cloud Shell, create an App Service plan with the az appservice plan create command.

W poniższym przykładzie jest tworzony plan usługi App Service o nazwie myAppServicePlan przy użyciu warstwy cenowej Bezpłatna:The following example creates an App Service plan named myAppServicePlan in the Free pricing tier:

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

Po utworzeniu planu usługi App Service interfejs wiersza polecenia platformy Azure wyświetli informacje podobne do następujących:When the App Service plan has been created, the Azure CLI shows information similar to the following example:

{ 
  "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
} 

Tworzenie aplikacji internetowejCreate a web app

Utwórz aplikację internetową w planie usługi App Service myAppServicePlan.Create a web app in the myAppServicePlan App Service plan.

W usłudze Cloud Shell można użyć polecenia az webapp create.In the Cloud Shell, you can use the az webapp create command. W poniższym przykładzie zastąp ciąg <app-name> globalnie unikatową nazwą aplikacji (prawidłowe znaki to a-z, 0-9 i -).In the following example, replace <app-name> with a globally unique app name (valid characters are a-z, 0-9, and -).

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

Po utworzeniu aplikacji internetowej w interfejsie wiersza polecenia platformy Azure zostaną wyświetlone dane wyjściowe podobne do następujących:When the web app has been created, the Azure CLI shows output similar to the following example:

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

Uwaga

Adres URL zdalnego repozytorium Git jest wyświetlany we właściwości deploymentLocalGitUrl w formacie https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git.The URL of the Git remote is shown in the deploymentLocalGitUrl property, with the format https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git. Zapisz ten adres URL, ponieważ będzie on potrzebny później.Save this URL as you need it later.

Konfigurowanie parametrów połączeniaConfigure connection string

Aby ustawić parametry połączenia dla aplikacji platformy Azure, użyj polecenia az webapp config appsettings set w usłudze Cloud Shell.To set connection strings for your Azure app, use the az webapp config appsettings set command in the Cloud Shell. W poniższym poleceniu zastąp parametry <nazwa_aplikacji> i <parametry_połączenia> utworzonymi wcześniej parametrami połączenia.In the following command, replace <app name>, as well as the <connection_string> parameter with the connection string you created earlier.

az webapp config connection-string set --resource-group myResourceGroup --name <app name> --settings MyDbConnection="<connection_string>" --connection-string-type SQLServer

W ASP.NET Core można użyć tego nazwanego ciągu połączenia (MyDbConnection) przy użyciu wzorca standardowego, takiego jak wszystkie parametry połączenia określone w pliku appSettings. JSON.In ASP.NET Core, you can use this named connection string (MyDbConnection) using the standard pattern, like any connection string specified in appsettings.json. W takim przypadku MyDbConnection jest również zdefiniowana w pliku appSettings. JSON.In this case, MyDbConnection is also defined in your appsettings.json. W przypadku uruchamiania w App Service parametry połączenia zdefiniowane w App Service mają pierwszeństwo przed parametrami połączenia zdefiniowanymi w pliku appSettings. JSON.When running in App Service, the connection string defined in App Service takes precedence over the connection string defined in your appsettings.json. Kod używa wartości appSettings. JSON podczas tworzenia lokalnego i ten sam kod używa wartości App Service po wdrożeniu.The code uses the appsettings.json value during local development, and the same code uses the App Service value when deployed.

Aby zobaczyć, w jaki sposób w kodzie występuje odwołanie do parametrów połączenia, zobacz łączenie z SQL Database w środowisku produkcyjnym.To see how the connection string is referenced in your code, see Connect to SQL Database in production.

Konfiguruj zmienną środowiskowąConfigure environment variable

Następnie wybierz dla ustawienia aplikacji ASPNETCORE_ENVIRONMENT wartość Produkcja.Next, set ASPNETCORE_ENVIRONMENT app setting to Production. To ustawienie pozwala sprawdzić, czy korzystasz z platformy Azure, ponieważ korzystasz z oprogramowania SQLite dla lokalnego środowiska deweloperskiego i SQL Database dla środowiska platformy Azure.This setting lets you know whether you're running in Azure, because you use SQLite for your local development environment and SQL Database for your Azure environment.

W poniższym przykładzie pokazano konfigurowanie ustawienia aplikacji ASPNETCORE_ENVIRONMENT w aplikacji platformy Azure.The following example configures a ASPNETCORE_ENVIRONMENT app setting in your Azure app. Zastąp symbol zastępczy <nazwa_aplikacji> .Replace the <app_name> placeholder.

az webapp config appsettings set --name <app_name> --resource-group myResourceGroup --settings ASPNETCORE_ENVIRONMENT="Production"

Aby zobaczyć, w jaki sposób zmienna środowiskowa jest przywoływana w kodzie, zobacz Connect to SQL Database in Production.To see how the environment variable is referenced in your code, see Connect to SQL Database in production.

Łączenie z bazą danych SQL Database w środowisku produkcyjnymConnect to SQL Database in production

W repozytorium lokalnym otwórz plik Startup.cs i znajdź następujący kod:In your local repository, open Startup.cs and find the following code:

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

Zastąp go poniższym kodem, który używa skonfigurowanych wcześniej zmiennych środowiskowych.Replace it with the following code, which uses the environment variables that you configured earlier.

// Use SQL Database if in Azure, otherwise, use SQLite
if(Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") == "Production")
    services.AddDbContext<MyDatabaseContext>(options =>
            options.UseSqlServer(Configuration.GetConnectionString("MyDbConnection")));
else
    services.AddDbContext<MyDatabaseContext>(options =>
            options.UseSqlite("Data Source=localdatabase.db"));

// Automatically perform database migration
services.BuildServiceProvider().GetService<MyDatabaseContext>().Database.Migrate();

Jeśli ten kod wykryje, że jest uruchomiony w środowisku produkcyjnym (który wskazuje środowisko platformy Azure), następnie używa parametrów połączenia skonfigurowanych do łączenia się z SQL Database.If this code detects that it's running in production (which indicates the Azure environment), then it uses the connection string you configured to connect to the SQL Database.

Wywołanie Database.Migrate() pomaga podczas uruchamiania na platformie Azure, ponieważ automatycznie tworzy bazy danych, których potrzebuje aplikacja .NET Core, na podstawie konfiguracji migracji.The Database.Migrate() call helps you when it's run in Azure, because it automatically creates the databases that your .NET Core app needs, based on its migration configuration.

Ważne

W przypadku aplikacji produkcyjnych wymagających skalowania w poziomie postępuj zgodnie z najlepszymi rozwiązaniami opisanymi w rozdziale Stosowanie migracji w środowisku produkcyjnym.For production apps that need to scale out, follow the best practices in Applying migrations in production.

Zapisz zmiany, a następnie zatwierdź je w repozytorium Git.Save your changes, then commit it into your Git repository.

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

Wypychanie z narzędzia Git na platformę AzurePush to Azure from Git

W lokalnym oknie terminala dodaj zdalną platformę Azure do lokalnego repozytorium Git.Back in the local terminal window, add an Azure remote to your local Git repository. Zastąp ciąg <deploymentLocalGitUrl-from-create-step> adresem URL zdalnego repozytorium Git zapisanym w sekcji Tworzenie aplikacji internetowej.Replace <deploymentLocalGitUrl-from-create-step> with the URL of the Git remote that you saved from Create a web app.

git remote add azure <deploymentLocalGitUrl-from-create-step>

Wypchnij na zdalną platformę Azure w celu wdrożenia aplikacji za pomocą następującego polecenia.Push to the Azure remote to deploy your app with the following command. Gdy w Menedżerze poświadczeń repozytorium Git zostanie wyświetlony monit o podanie poświadczeń, upewnij się, że wprowadzasz poświadczenia utworzone podczas konfiguracji użytkownika wdrożenia, a nie poświadczenia, których używasz do logowania się w witrynie Azure Portal.When prompted for credentials by Git Credential Manager, make sure that you enter the credentials you created in Configure a deployment user, not the credentials you use to sign in to the Azure portal.

git push azure master

Wykonanie tego polecenia może potrwać kilka minut.This command may take a few minutes to run. Podczas wykonywania polecenie wyświetli informacje podobne do następującego przykładu:While running, it displays information similar to the following example:

Counting objects: 98, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (92/92), done.
Writing objects: 100% (98/98), 524.98 KiB | 5.58 MiB/s, done.
Total 98 (delta 8), reused 0 (delta 0)
remote: Updating branch 'master'.
remote: .
remote: Updating submodules.
remote: Preparing deployment for commit id '0c497633b8'.
remote: Generating deployment script.
remote: Project file path: ./DotNetCoreSqlDb.csproj
remote: Generated deployment script files
remote: Running deployment command...
remote: Handling ASP.NET Core Web Application deployment.
remote: .
remote: .
remote: .
remote: Finished successfully.
remote: Running post deployment command(s)...
remote: Deployment successful.
remote: App container will begin restart within 10 seconds.
To https://<app_name>.scm.azurewebsites.net/<app_name>.git
 * [new branch]      master -> master

Przechodzenie do aplikacji platformy AzureBrowse to the Azure app

Przejdź do wdrożonej aplikacji w przeglądarce internetowej.Browse to the deployed app using your web browser.

http://<app_name>.azurewebsites.net

Dodaj kilka elementów do wykonania.Add a few to-do items.

aplikacja działająca w usłudze App Service

Gratulacje!Congratulations! Używasz opartej na danych aplikacji .NET Core w usłudze App Service.You're running a data-driven .NET Core app in App Service.

Lokalne aktualizowanie i ponowne wdrażanieUpdate locally and redeploy

W tym kroku wprowadzisz zmianę schematu bazy danych i opublikujesz ją na platformie Azure.In this step, you make a change to your database schema and publish it to Azure.

Aktualizowanie modelu danychUpdate your data model

Otwórz plik Models\Todo.cs w edytorze kodu.Open Models\Todo.cs in the code editor. Dodaj następującą właściwość do klasy ToDo:Add the following property to the ToDo class:

public bool Done { get; set; }

Lokalne uruchamianie migracji Code FirstRun Code First Migrations locally

Uruchom kilka poleceń, aby zastosować aktualizacje w lokalnej bazie danych.Run a few commands to make updates to your local database.

dotnet ef migrations add AddProperty

Zaktualizuj lokalną bazę danych:Update the local database:

dotnet ef database update

Używanie nowej właściwościUse the new property

Wprowadź zmiany kodu, aby użyć właściwości Done.Make some changes in your code to use the Done property. Dla uproszczenia w tym samouczku zmienisz tylko widoki Index i Create, aby zobaczyć, jak działa właściwość.For simplicity in this tutorial, you're only going to change the Index and Create views to see the property in action.

Otwórz plik Controllers\TodosController.cs.Open Controllers\TodosController.cs.

Znajdź metodę Create([Bind("ID,Description,CreatedDate")] Todo todo) i dodaj element Done do listy właściwości w atrybucie Bind.Find the Create([Bind("ID,Description,CreatedDate")] Todo todo) method and add Done to the list of properties in the Bind attribute. Po zakończeniu podpis metody Create() będzie wyglądać podobnie do następującego kodu:When you're done, your Create() method signature looks like the following code:

public async Task<IActionResult> Create([Bind("ID,Description,CreatedDate,Done")] Todo todo)

Otwórz plik Views\Todos\Create.cshtml.Open Views\Todos\Create.cshtml.

W kodzie Razor powinien zostać wyświetlony element <div class="form-group"> dla Description, a następnie inny element <div class="form-group"> dla CreatedDate.In the Razor code, you should see a <div class="form-group"> element for Description, and then another <div class="form-group"> element for CreatedDate. Bezpośrednio po tych dwóch elementach dodaj kolejny element <div class="form-group"> dla Done:Immediately following these two elements, add another <div class="form-group"> element for Done:

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

Otwórz plik Views\Todos\Index.cshtml.Open Views\Todos\Index.cshtml.

Wyszukaj pusty element <th></th>.Search for the empty <th></th> element. Bezpośrednio nad tym elementem dodaj następujący kod Razor:Just above this element, add the following Razor code:

<th>
    @Html.DisplayNameFor(model => model.Done)
</th>

Znajdź element <td> z pomocnikami tagów (asp-action).Find the <td> element that contains the asp-action tag helpers. Bezpośrednio nad tym elementem dodaj następujący kod Razor:Just above this element, add the following Razor code:

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

To już wszystko, czego potrzebujesz, aby zobaczyć zmiany w widokach Index i Create.That's all you need to see the changes in the Index and Create views.

Lokalne testowanie zmianTest your changes locally

Uruchom aplikację lokalnie.Run the app locally.

dotnet run

W przeglądarce przejdź do http://localhost:5000/.In your browser, navigate to http://localhost:5000/. Teraz możesz dodać element do wykonania i zaznaczyć pole Gotowe.You can now add a to-do item and check Done. Następnie powinien zostać on wyświetlony na stronie głównej jako ukończony.Then it should show up in your homepage as a completed item. Pamiętaj, że widok Edit nie zawiera pola Done, ponieważ nie zmieniono widoku Edit.Remember that the Edit view doesn't show the Done field, because you didn't change the Edit view.

Publikowanie zmian na platformie AzurePublish changes to Azure

git add .
git commit -m "added done field"
git push azure master

Po zakończeniu git push przejdź do aplikacji App Service i ponów próbę dodania elementu do wykonania i zaznacz opcję gotowe.Once the git push is complete, navigate to your App Service app and try adding a to-do item and check Done.

Aplikacja platformy Azure po zakończeniu migracji Code First

Nadal wyświetlane są wszystkie istniejące elementy do wykonania.All your existing to-do items are still displayed. Po ponownym opublikowaniu aplikacji .NET Core istniejące dane w SQL Database nie zostaną utracone.When you republish your .NET Core app, existing data in your SQL Database isn't lost. Ponadto migracje Entity Framework Core zmieniają tylko schemat danych i pozostawiają istniejące dane bez zmian.Also, Entity Framework Core Migrations only changes the data schema and leaves your existing data intact.

Przesyłanie strumieniowe dzienników diagnostycznychStream diagnostic logs

Gdy aplikacja ASP.NET Core działa w usłudze Azure App Service, dzienniki konsoli można przesłać potokiem do usługi Cloud Shell.While the ASP.NET Core app runs in Azure App Service, you can get the console logs piped to the Cloud Shell. W ten sposób można użyć komunikatów diagnostycznych w celu ułatwienia debugowania błędów aplikacji.That way, you can get the same diagnostic messages to help you debug application errors.

Przykładowy projekt jest już zgodny ze wskazówkami dostępnymi w opisie rejestrowania platformy ASP.NET Core na platformie Azure z dwiema zmianami konfiguracji:The sample project already follows the guidance at ASP.NET Core Logging in Azure with two configuration changes:

  • Zawiera odwołanie do Microsoft.Extensions.Logging.AzureAppServices w pliku DotNetCoreSqlDb.csproj.Includes a reference to Microsoft.Extensions.Logging.AzureAppServices in DotNetCoreSqlDb.csproj.
  • Wywołuje loggerFactory.AddAzureWebAppDiagnostics() w program.cs.Calls loggerFactory.AddAzureWebAppDiagnostics() in Program.cs.

Aby zmienić domyślny poziom rejestrowania platformy ASP.NET Core Error w usłudze App Service na poziom Information, użyj w usłudze Cloud Shell polecenia az webapp log config.To set the ASP.NET Core log level in App Service to Information from the default level Error, use the az webapp log config command in the Cloud Shell.

az webapp log config --name <app_name> --resource-group myResourceGroup --application-logging true --level information

Uwaga

Poziom rejestrowania projektu jest już ustawiony na Information w pliku appsettings.json.The project's log level is already set to Information in appsettings.json.

Aby rozpocząć przesyłanie strumieniowe dzienników, użyj polecenia az webapp log tail w usłudze Cloud Shell.To start log streaming, use the az webapp log tail command in the Cloud Shell.

az webapp log tail --name <app_name> --resource-group myResourceGroup

Po rozpoczęciu przesyłania strumieniowego dzienników odśwież aplikację platformy Azure w przeglądarce, aby wywołać pewien ruch w Internecie.Once log streaming has started, refresh the Azure app in the browser to get some web traffic. Teraz można zobaczyć dzienniki konsoli przesłane potokiem do terminala.You can now see console logs piped to the terminal. Jeśli nie widzisz dzienników konsoli, sprawdź ponownie w ciągu 30 sekund.If you don't see console logs immediately, check again in 30 seconds.

Aby zatrzymać przesyłanie strumieniowe dzienników w dowolnym momencie, wpisz Ctrl+C.To stop log streaming at any time, type Ctrl+C.

Aby uzyskać więcej informacji na temat dostosowywania dzienników platformy ASP.NET Core, zobacz Logging in ASP.NET Core (Rejestrowanie na platformie ASP.NET Core).For more information on customizing the ASP.NET Core logs, see Logging in ASP.NET Core.

Zarządzanie aplikacją platformy AzureManage your Azure app

Aby wyświetlić utworzoną aplikację, w Azure PortalWyszukaj i wybierz pozycję App Services.To see the app you created, in the Azure portal, search for and select App Services.

Wybierz App Services w Azure Portal

Na stronie App Services wybierz nazwę swojej aplikacji platformy Azure.On the App Services page, select the name of your Azure app.

Nawigacja w portalu do aplikacji platformy Azure

Domyślnie portal pokazuje stronę Przegląd aplikacji.By default, the portal shows your app's Overview page. Ta strona udostępnia widok sposobu działania aplikacji.This page gives you a view of how your app is doing. Tutaj możesz również wykonywać podstawowe zadania zarządzania, takie jak przeglądanie, zatrzymywanie, uruchamianie, ponowne uruchamianie i usuwanie.Here, you can also perform basic management tasks like browse, stop, start, restart, and delete. Po lewej stronie strony zostaną wyświetlone różne strony konfiguracji, które można otworzyć.The left side of the page shows the different configuration pages you can open.

Strona usługi App Service w witrynie Azure Portal

Oczyszczanie zasobówClean up resources

W poprzednich krokach utworzono zasoby platformy Azure w grupie zasobów.In the preceding steps, you created Azure resources in a resource group. Jeśli te zasoby nie będą raczej potrzebne w przyszłości, usuń grupę zasobów, uruchamiając następujące polecenie w usłudze Cloud Shell:If you don't expect to need these resources in the future, delete the resource group by running the following command in the Cloud Shell:

az group delete --name myResourceGroup

Wykonanie tego polecenia może potrwać około minutę.This command may take a minute to run.

Następne krokiNext steps

Które czynności umiesz wykonać:What you learned:

  • Tworzenie bazy danych SQL Database na platformie AzureCreate a SQL Database in Azure
  • Łączenie aplikacji .NET Core z bazą danych SQL DatabaseConnect a .NET Core app to SQL Database
  • Wdrażanie aplikacji na platformie AzureDeploy the app to Azure
  • Aktualizowanie modelu danych i ponowne wdrażanie aplikacjiUpdate the data model and redeploy the app
  • Strumieniowe przesyłanie dzienników z platformy Azure do terminalaStream logs from Azure to your terminal
  • Zarządzanie aplikacją w witrynie Azure PortalManage the app in the Azure portal

Przejdź do następnego samouczka, aby dowiedzieć się, jak zmapować niestandardową nazwę DNS na aplikację.Advance to the next tutorial to learn how to map a custom DNS name to your app.