Compilación de una aplicación web .NET Core y SQL Database en Azure App Service en LinuxBuild a .NET Core and SQL Database web app in Azure App Service on Linux

Nota

En este artículo se implementa una aplicación en App Service en Linux.This article deploys an app to App Service on Linux. Para implementar App Service en Windows, consulte Creación de una aplicación web .NET Core y SQL Database en Azure App Service.To deploy to App Service on Windows, see Build a .NET Core and SQL Database web app in Azure App Service.

App Service en Linux proporciona un servicio de hospedaje web muy escalable y con aplicación automática de revisiones utilizando el sistema operativo Linux.App Service on Linux provides a highly scalable, self-patching web hosting service using the Linux operating system. En este tutorial se muestra cómo crear una aplicación web .NET Core y conectarla a una instancia de SQL Database.This tutorial shows how to create a .NET Core web app and connect it to a SQL Database. Cuando termine, tendrá una aplicación .NET Core con MVC en ejecución en App Service en Linux.When you're done, you'll have a .NET Core MVC app running in App Service on Linux.

aplicación que se ejecuta en App Service en Linux

Aprenderá a:What you learn how to:

  • Crear una base de datos Azure SQL DatabaseCreate a SQL Database in Azure
  • Conectar una aplicación .NET Core a SQL DatabaseConnect a .NET Core app to SQL Database
  • Implementación de la aplicación en AzureDeploy the app to Azure
  • Actualizar el modelo de datos y volver a implementar la aplicaciónUpdate the data model and redeploy the app
  • Transmitir registros de diagnóstico desde AzureStream diagnostic logs from Azure
  • Administrar la aplicación en Azure PortalManage the app in the Azure portal

Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.If you don't have an Azure subscription, create a free account before you begin.

Requisitos previosPrerequisites

Para completar este tutorial:To complete this tutorial:

Creación de una aplicación .NET Core localCreate local .NET Core app

En este paso, configurará el proyecto .NET Core local.In this step, you set up the local .NET Core project.

Clonación de la aplicación de ejemploClone the sample application

En la ventana del terminal, use cd para cambiar a un directorio de trabajo.In the terminal window, cd to a working directory.

Ejecute los comandos siguientes para clonar el repositorio de ejemplo y cambia a su raíz.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

El proyecto de ejemplo contiene una aplicación básica CRUD (crear, leer, actualizar, eliminar) que usa Entity Framework Core.The sample project contains a basic CRUD (create-read-update-delete) app using Entity Framework Core.

Ejecución de la aplicaciónRun the application

Ejecute los comandos siguientes para instalar los paquetes necesarios, ejecute las migraciones de bases de datos e inicie la aplicación.Run the following commands to install the required packages, run database migrations, and start the application.

dotnet restore
dotnet ef database update
dotnet run

Vaya a http://localhost:5000 en un explorador.Navigate to http://localhost:5000 in a browser. Seleccione el vínculo Crear nuevo y cree un par de elementos de tareas pendientes.Select the Create New link and create a couple to-do items.

Se conecta correctamente a SQL Database

Para detener .NET Core en cualquier momento, presione Ctrl+C en el terminal.To stop .NET Core at any time, press Ctrl+C in the terminal.

Apertura de Azure Cloud ShellOpen Azure Cloud Shell

Azure Cloud Shell es un shell interactivo gratuito que puede usar para ejecutar los pasos de este artículo.Azure Cloud Shell is a free, interactive shell that you can use to run the steps in this article. Cloud Shell incluye herramientas comunes de Azure preinstaladas y configuradas para que las use con su cuenta.Common Azure tools are preinstalled and configured in Cloud Shell for you to use with your account. Basta con seleccionar el botón Copiar para copiar el código, pegarlo en Cloud Shell y, luego, presionar Entrar para ejecutarlo.Just select the Copy button to copy the code, paste it in Cloud Shell, and then press Enter to run it. Existen varias maneras de abrir Cloud Shell:There are a few ways to open Cloud Shell:

Seleccione Probarlo en la esquina superior derecha de un bloque de código.Select Try It in the upper-right corner of a code block. Cloud Shell en este artículo
Abra Cloud Shell en el explorador.Open Cloud Shell in your browser. https://shell.azure.com/bash
Seleccione el botón Cloud Shell en el menú de la esquina superior derecha de Azure Portal.Select the Cloud Shell button on the menu in the upper-right corner of the Azure portal. Cloud Shell en el portal

Creación de una instancia de SQL Database de producciónCreate production SQL Database

En este paso, creará una instancia de SQL Database en Azure.In this step, you create a SQL Database in Azure. Cuando la aplicación se implementa en Azure, utiliza esta base de datos en la nube.When your app is deployed to Azure, it uses this cloud database.

Para SQL Database, en este tutorial se usa Azure SQL Database.For SQL Database, this tutorial uses Azure SQL Database.

Crear un grupo de recursosCreate a resource group

Un grupo de recursos es un contenedor lógico en el que se implementan y administran recursos de Azure como aplicaciones web, bases de datos y cuentas de almacenamiento.A resource group is a logical container into which Azure resources like web apps, databases, and storage accounts are deployed and managed. Por ejemplo, más adelante puede elegir eliminar todo el grupo de recursos en un solo paso.For example, you can choose to delete the entire resource group in one simple step later.

En Cloud Shell, cree un grupo de recursos con el comando az group create.In the Cloud Shell, create a resource group with the az group create command. En el ejemplo siguiente, se crea un grupo de recursos denominado myResourceGroup en la ubicación Europa Occidental.The following example creates a resource group named myResourceGroup in the West Europe location. Para ver todas las ubicaciones de App Service que se admiten en Linux en el nivel Básico, ejecute el comando az appservice list-locations --sku B1 --linux-workers-enabled.To see all supported locations for App Service on Linux in Basic tier, run the az appservice list-locations --sku B1 --linux-workers-enabled command.

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

Generalmente se crean el grupo de recursos y los recursos en una región cercana.You generally create your resource group and the resources in a region near you.

Cuando finaliza el comando, una salida de JSON muestra las propiedades del grupo de recursos.When the command finishes, a JSON output shows you the resource group properties.

Creación de un servidor lógico de SQL DatabaseCreate a SQL Database logical server

En Cloud Shell, cree un servidor lógico de SQL Database con el comando az sql server create.In the Cloud Shell, create a SQL Database logical server with the az sql server create command.

Reemplace el marcador de posición <server_name> con un nombre de SQL Database único.Replace the <server_name> placeholder with a unique SQL Database name. Este nombre se usa como parte del punto de conexión de SQL Database, <server_name>.database.windows.net, por lo que el nombre debe ser único para todos los servidores lógicos en 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. El nombre debe contener solo letras minúsculas, números y el carácter de guión (-), y debe tener una longitud de entre 3 y 50 caracteres.The name must contain only lowercase letters, numbers, and the hyphen (-) character, and must be between 3 and 50 characters long. Además, reemplace <db_username> y <db_password> por un nombre de usuario y una contraseña de su elección.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>

Cuando se crea el servidor lógico de SQL Database, la CLI de Azure muestra información similar al ejemplo siguiente: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"
}

Configuración de una regla de firewall del servidorConfigure a server firewall rule

Cree una regla de firewall en el nivel de servidor de Azure SQL Database mediante el comando az sql server firewall create.Create an Azure SQL Database server-level firewall rule using the az sql server firewall create command. Cuando tanto la dirección IP de inicio como final están establecidas en 0.0.0.0., el firewall solo se abre para otros recursos de 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 AllowYourIp --start-ip-address 0.0.0.0 --end-ip-address 0.0.0.0

Creación de una base de datosCreate a database

Cree una base de datos con un nivel de rendimiento S0 en el servidor con el comando 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

Creación de la cadena de conexiónCreate connection string

Reemplace la cadena siguiente por el valor de <server_name>, <db_username> y <db_password> que usó anteriormente.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;

Esta es la cadena de conexión de la aplicación .NET Core.This is the connection string for your .NET Core app. Cópiela para usarla más adelante.Copy it for use later.

Implementación de aplicación en AzureDeploy app to Azure

En este paso, implementará la aplicación .NET Core conectada a SQL Database en App Service en Linux.In this step, you deploy your SQL Database-connected .NET Core application to App Service on Linux.

Configuración de la implementación de Git localConfigure local git deployment

En Cloud Shell, cree credenciales de implementación con el comando az webapp deployment user set.In the Cloud Shell, create deployment credentials with the az webapp deployment user set command. Se requiere este usuario de implementación para la implementación de FTP y Git local en una aplicación web.This deployment user is required for FTP and local Git deployment to a web app. El nombre de usuario y la contraseña predeterminados están en el nivel de la cuenta.The user name and password are account level. Son diferentes de las credenciales de suscripción de Azure.They are different from your Azure subscription credentials.

En el siguiente ejemplo, reemplace <username> y <password> (corchetes angulares incluidos) por un nuevo nombre de usuario y contraseña.In the following example, replace <username> and <password> (including brackets) with a new user name and password. El nombre de usuario debe ser único en Azure.The user name must be unique within Azure. La contraseña debe tener al menos ocho caracteres, con dos de los tres elementos siguientes: letras, números y símbolos.The password must be at least eight characters long, with two of the following three elements: letters, numbers, symbols.

az webapp deployment user set --user-name <username> --password <password>

Debe obtener una salida de JSON, con la contraseña mostrada como null.You should get a JSON output, with the password shown as null. Si se produce un error 'Conflict'. Details: 409, cambie el nombre de usuario.If you get a 'Conflict'. Details: 409 error, change the username. Si se produce un error 'Bad Request'. Details: 400, use una contraseña más segura.If you get a 'Bad Request'. Details: 400 error, use a stronger password.

Solo es necesario crear este usuario de implementación una vez, y puede usarlo en todas las implementaciones de Azure.You create this deployment user only once; you can use it for all your Azure deployments.

Nota

Registre el nombre de usuario y la contraseña.Record the user name and password. Los va a necesitar para implementar la aplicación web más adelante.You need them to deploy the web app later.

Creación de un plan de App ServiceCreate an App Service plan

En Cloud Shell, cree un plan de App Service en el grupo de recursos con el comando az appservice plan create.In the Cloud Shell, create an App Service plan in the resource group with the az appservice plan create command.

En el ejemplo siguiente se crea un plan de App Service denominado myAppServicePlan en el plan de tarifa Básico (--sku B1) en un contenedor Linux (--is-linux).The following example creates an App Service plan named myAppServicePlan in the Basic pricing tier (--sku B1) and in a Linux container (--is-linux).

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

Cuando se ha creado el plan de App Service, la CLI de Azure muestra información similar al ejemplo siguiente: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": "linux",
  "location": "West Europe",
  "maximumNumberOfWorkers": 1,
  "name": "myAppServicePlan",
  < JSON data removed for brevity. >
  "targetWorkerSizeId": 0,
  "type": "Microsoft.Web/serverfarms",
  "workerTierName": null
} 

Creación de una aplicación webCreate a web app

Cree una aplicación web en el plan de App Service de myAppServicePlan.Create a web app in the myAppServicePlan App Service plan.

En Cloud Shell, puede usar el comando az webapp create.In the Cloud Shell, you can use the az webapp create command. En el siguiente ejemplo, reemplace <app_name> por un nombre único global de aplicación (los caracteres válidos son a-z, 0-9 y -).In the following example, replace <app_name> with a globally unique app name (valid characters are a-z, 0-9, and -). El tiempo de ejecución se establece en dotnetcore|2.0.The runtime is set to dotnetcore|2.0. Para ver todos los entornos en tiempo de ejecución admitidos, ejecute az webapp list-runtimes --linux.To see all supported runtimes, run az webapp list-runtimes --linux.

# Bash
az webapp create --resource-group myResourceGroup --plan myAppServicePlan --name <app_name> --runtime "dotnetcore|2.0" --deployment-local-git
# PowerShell
az --% webapp create --resource-group myResourceGroup --plan myAppServicePlan --name <app_name> --runtime "dotnetcore|2.0" --deployment-local-git

Cuando se haya creado la aplicación web, la CLI de Azure mostrará información similar a la del ejemplo siguiente: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. >
}

Ha creado una aplicación web vacía en un contenedor de Linux, con la implementación de Git habilitada.You’ve created an empty web app in a Linux container, with git deployment enabled.

Nota

La dirección URL del repositorio de Git remoto se muestra en la propiedad deploymentLocalGitUrl, con el formato 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. Guarde esta dirección URL, ya que la necesitará más adelante.Save this URL as you need it later.

Configuración de una variable de entornoConfigure an environment variable

Para establecer las cadenas de conexión de la aplicación de Azure, use el comando az webapp config appsettings set en Cloud Shell.To set connection strings for your Azure app, use the az webapp config appsettings set command in the Cloud Shell. En el comando siguiente, reemplace el parámetro <app name> así como <connection_string> por la cadena de conexión que creó anteriormente.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

A continuación, establezca la configuración de la aplicación ASPNETCORE_ENVIRONMENT en Producción.Next, set ASPNETCORE_ENVIRONMENT app setting to Production. Esta configuración permite saber si ejecuta Azure, porque usa SQLite para el entorno de desarrollo local y SQL Database para el entorno de Azure.This setting lets you know whether you are running in Azure, because you use SQLite for your local development environment and SQL Database for your Azure environment.

En el ejemplo siguiente se configura una opción de configuración de aplicación ASPNETCORE_ENVIRONMENT en la aplicación web de Azure.The following example configures a ASPNETCORE_ENVIRONMENT app setting in your Azure web app. Reemplace el marcador de posición <app_name>.Replace the <app_name> placeholder.

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

Conexión a SQL Database en producciónConnect to SQL Database in production

En el repositorio local, abra Startup.cs y busque el código siguiente:In your local repository, open Startup.cs and find the following code:

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

Reemplácelo por el código siguiente, que usa las variables de entorno que configuró anteriormente.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=MvcMovie.db"));

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

Si este código detecta que se ejecuta en producción (lo que indica el entorno de Azure), usa la cadena de conexión que configuró para conectarse a SQL Database.If this code detects that it is running in production (which indicates the Azure environment), then it uses the connection string you configured to connect to the SQL Database.

La llamada de Database.Migrate() le ayuda cuando se ejecuta en Azure, porque crea automáticamente las bases de datos que necesita la aplicación .NET Core según su configuración de migración.The Database.Migrate() call helps you when it is run in Azure, because it automatically creates the databases that your .NET Core app needs, based on its migration configuration.

Guarde los cambios y confírmelos en el repositorio de Git.Save your changes, then commit it into your Git repository.

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

Inserción en Azure desde GitPush to Azure from Git

En la ventana del terminal local, agregue una instancia remota de Azure al repositorio de Git local.Back in the local terminal window, add an Azure remote to your local Git repository. Reemplace <deploymentLocalGitUrl-from-create-step> por la dirección URL del repositorio de Git remoto que guardó en Creación de una aplicación web.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>

Inserte en la instancia remota de Azure para implementar la aplicación con el comando siguiente.Push to the Azure remote to deploy your app with the following command. Cuando el administrador de credenciales de Git le solicite las credenciales, asegúrese de que especifica las credenciales que creó en Configuración de un usuario de implementación, no las que usó para iniciar sesión en 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

Este comando puede tardar varios minutos en ejecutarse.This command may take a few minutes to run. Durante la ejecución, muestra información similar a la del ejemplo siguiente: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

Navegación hasta la aplicación web de AzureBrowse to the Azure web app

Vaya a la aplicación implementada mediante el explorador web.Browse to the deployed web app using your web browser.

http://<app_name>.azurewebsites.net

Agregue algunos elementos de tareas pendientes.Add a few to-do items.

aplicación que se ejecuta en App Service en Linux

¡Enhorabuena!Congratulations! Está ejecutando una aplicación .NET Core controlada por datos en App Service en Linux.You're running a data-driven .NET Core app in App Service on Linux.

Actualización local y nueva implementaciónUpdate locally and redeploy

En este paso, modificará el esquema de la base de datos y lo publicará en Azure.In this step, you make a change to your database schema and publish it to Azure.

Actualización del modelo de datosUpdate your data model

Abra Models\Todo.cs en el editor de código.Open Models\Todo.cs in the code editor. Agregue la siguiente propiedad a la clase ToDo:Add the following property to the ToDo class:

public bool Done { get; set; }

Ejecución de Migraciones de Code FirstRun Code First Migrations locally

Ejecute algunos comandos para realizar actualizaciones en la base de datos local.Run a few commands to make updates to your local database.

dotnet ef migrations add AddProperty

Actualice la base de datos local:Update the local database:

dotnet ef database update

Uso de la nueva propiedadUse the new property

Realice algunos cambios en el código para usar la propiedad Done.Make some changes in your code to use the Done property. Para simplificar, en este tutorial va a cambiar las vistas Index y Create para ver la propiedad en acción.For simplicity in this tutorial, you're only going to change the Index and Create views to see the property in action.

Abra Controllers\TodosController.cs.Open Controllers\TodosController.cs.

Busque el método Create() y agregue Done a la lista de propiedades en el atributo Bind.Find the Create() method and add Done to the list of properties in the Bind attribute. Cuando haya terminado, la firma del método Create() se parecerá al código siguiente: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)

Abra Views\Todos\Create.cshtml.Open Views\Todos\Create.cshtml.

En el código Razor debería ver un elemento <div class="form-group"> para Description y, luego, otro elemento <div class="form-group"> para 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. Inmediatamente después de estos dos elementos, agregue otro elemento <div class="form-group"> para 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>

Abra Views\Todos\Index.cshtml.Open Views\Todos\Index.cshtml.

Busque el elemento vacío <th></th>.Search for the empty <th></th> element. Justo encima de este elemento, agregue el siguiente código Razor:Just above this element, add the following Razor code:

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

Busque el elemento <td> que contiene los auxiliares de la etiqueta asp-action.Find the <td> element that contains the asp-action tag helpers. Justo encima de este elemento, agregue el siguiente código Razor:Just above this element, add the following Razor code:

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

Eso es todo lo que necesita para ver los cambios en las vistas Index y Create.That's all you need to see the changes in the Index and Create views.

Prueba de los cambios localmenteTest your changes locally

Ejecute localmente la aplicación.Run the app locally.

dotnet run

Abra el explorador y vaya a http://localhost:5000/.In your browser, navigate to http://localhost:5000/. Ahora puede agregar una tarea pendiente y marcar Listo.You can now add a to-do item and check Done. A continuación se debería mostrar en su página principal como un elemento completado.Then it should show up in your homepage as a completed item. Recuerde que la vista Edit no muestra el campo Done, dado que no cambió la vista Edit.Remember that the Edit view doesn't show the Done field, because you didn't change the Edit view.

Publicación de los cambios en AzurePublish changes to Azure

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

Una vez que git push esté completo, navegue hasta su aplicación web de Azure y pruebe la nueva funcionalidad.Once the git push is complete, navigate to your Azure web app and try out the new functionality.

Aplicación web de Azure después de aplicar Migraciones de Code First

Aún se muestran todas las tareas pendientes existentes.All your existing to-do items are still displayed. Cuando vuelva a publicar la aplicación .NET Core, no se perderán los datos existentes en la instancia de SQL Database.When you republish your .NET Core app, existing data in your SQL Database is not lost. Además, las migraciones de Entity Framework Core solo cambia el esquema de datos y deja intactos los datos existentes.Also, Entity Framework Core Migrations only changes the data schema and leaves your existing data intact.

Administración de la aplicación web de AzureManage your Azure web app

Vaya a Azure Portal para ver la aplicación web que ha creado.Go to the Azure portal to see the web app you created.

En el menú izquierdo, haga clic en App Services, a continuación, haga clic en el nombre de la aplicación web de Azure.From the left menu, click App Services, then click the name of your Azure web app.

Navegación desde el portal a la aplicación web de Azure

De forma predeterminada, el portal muestra la página Información general.By default, the portal shows your web app's Overview page. Esta página proporciona una visión del funcionamiento de la aplicación.This page gives you a view of how your app is doing. En este caso, también puede realizar tareas de administración básicas como examinar, detener, iniciar, reiniciar y eliminar.Here, you can also perform basic management tasks like browse, stop, start, restart, and delete. Las pestañas del lado izquierdo de la página muestran las diferentes páginas de configuración que puede abrir.The tabs on the left side of the page show the different configuration pages you can open.

Página de App Service en Azure Portal

Limpieza de recursosClean up resources

En los pasos anteriores, creó recursos de Azure en un grupo de recursos.In the preceding steps, you created Azure resources in a resource group. Si prevé que no necesitará estos recursos en el futuro, elimine el grupo de recursos ejecutando el siguiente comando en 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

Este comando puede tardar varios segundos en ejecutarse.This command may take a minute to run.

Pasos siguientesNext steps

¿Qué ha aprendido?What you learned:

  • Crear una base de datos Azure SQL DatabaseCreate a SQL Database in Azure
  • Conectar una aplicación .NET Core a SQL DatabaseConnect a .NET Core app to SQL Database
  • Implementación de la aplicación en AzureDeploy the app to Azure
  • Actualizar el modelo de datos y volver a implementar la aplicaciónUpdate the data model and redeploy the app
  • Transmitir registros desde Azure a un terminalStream logs from Azure to your terminal
  • Administrar la aplicación en Azure PortalManage the app in the Azure portal

Vaya al siguiente tutorial para aprender a asignar un nombre DNS personalizado a una aplicación web.Advance to the next tutorial to learn how to map a custom DNS name to your web app.