Publicar uma aplicação ASP.NET Core com base de dados...

17
Publicar uma aplicação ASP.NET Core com base de dados SqlServer no Azure usando Visual Studio e um perfil para publicação (publish profile) 1. Instalar no Visual Studio 2017 o workload “Azure Development” Visual Studio Installer > Mais > Modificar > Selecionar “Desenvolvimento para Azure” > Modificar 2. Criar uma aplicação Web Api Asp.Net (muito simples, sem autenticação) Visual Studio 2017 > File > New Project… >

Transcript of Publicar uma aplicação ASP.NET Core com base de dados...

Page 1: Publicar uma aplicação ASP.NET Core com base de dados ...mouta/ARQSI-2017-2018-1Sem/publishAspNetCoreWebA… · Publicar uma aplicação ASP.NET Core com base de dados SqlServer

Publicar uma aplicação ASP.NET Core com base de

dados SqlServer no Azure usando Visual Studio e um

perfil para publicação (publish profile)

1. Instalar no Visual Studio 2017 o workload “Azure Development”

Visual Studio Installer > Mais > Modificar >

Selecionar “Desenvolvimento para Azure” > Modificar

2. Criar uma aplicação Web Api Asp.Net (muito simples, sem autenticação)

Visual Studio 2017 > File > New Project… >

Page 2: Publicar uma aplicação ASP.NET Core com base de dados ...mouta/ARQSI-2017-2018-1Sem/publishAspNetCoreWebA… · Publicar uma aplicação ASP.NET Core com base de dados SqlServer

Executar a aplicação

Page 3: Publicar uma aplicação ASP.NET Core com base de dados ...mouta/ARQSI-2017-2018-1Sem/publishAspNetCoreWebA… · Publicar uma aplicação ASP.NET Core com base de dados SqlServer

Adicionar a classe Medicamento na pasta Models

TesteWebApiAspNet > Add > New Folder : Models

Models > Add > Class… Medicamento.cs

Gravar. Desaparece o asterisco em Medicamento.cs.

Page 4: Publicar uma aplicação ASP.NET Core com base de dados ...mouta/ARQSI-2017-2018-1Sem/publishAspNetCoreWebA… · Publicar uma aplicação ASP.NET Core com base de dados SqlServer

Scaffolding para criar Controlador para a entidade Medicamento

Controllers > Add > Controller…

Selecionar API Controller with actions, using Entity Framework

Selecionar a classe do modelo Medicamento e no nome do Controlador retirar “e” ao plural de

Medicamento -> MedicamentosController

Premir o botão + e adicionar a classe de contexto TesteWebApiAspNetContext

Add

Add

Page 5: Publicar uma aplicação ASP.NET Core com base de dados ...mouta/ARQSI-2017-2018-1Sem/publishAspNetCoreWebA… · Publicar uma aplicação ASP.NET Core com base de dados SqlServer

Verificar a criação do objeto DbSet para acesso à base de dados (na classe TesteWebApiAspNetContext, subclasse de DbContext)

O nome, por omissão, da connectionString existente no ficheiro appsettings.json é o nome

desta classe, TesteWebApiAspNetContext.

Page 6: Publicar uma aplicação ASP.NET Core com base de dados ...mouta/ARQSI-2017-2018-1Sem/publishAspNetCoreWebA… · Publicar uma aplicação ASP.NET Core com base de dados SqlServer

Inicializar automaticamente a base de dados no arranque da aplicação.

Data > Add > Class… DbInitializer.cs

public class DbInitializer { public static void Initialize(TesteWebApiAspNetContext context) { context.Database.EnsureCreated(); // Look for any medicamentos. if (context.Medicamento.Any()) { return; // DB has been seeded } var medicamentos = new Medicamento[] { new Medicamento{Nome="Brufen"}, new Medicamento{Nome="Ben-u-ron"} }; foreach (Medicamento m in medicamentos) { context.Medicamento.Add(m); } context.SaveChanges(); } }

Page 7: Publicar uma aplicação ASP.NET Core com base de dados ...mouta/ARQSI-2017-2018-1Sem/publishAspNetCoreWebA… · Publicar uma aplicação ASP.NET Core com base de dados SqlServer

Alterar a classe Program.cs using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Logging; using Microsoft.Extensions.DependencyInjection; using TesteWebApiAspNet.Data; using TesteWebApiAspNet.Models; namespace TesteWebApiAspNet { public class Program { //public static void Main(string[] args) //{ // BuildWebHost(args).Run(); //} public static void Main(string[] args) { var host = BuildWebHost(args); using (var scope = host.Services.CreateScope()) { var services = scope.ServiceProvider; try { var context = services.GetRequiredService<TesteWebApiAspNetContext>(); DbInitializer.Initialize(context); } catch (Exception ex) { var logger = services.GetRequiredService<ILogger<Program>>(); logger.LogError(ex, "An error occurred while seeding the database."); } } host.Run(); } public static IWebHost BuildWebHost(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup<Startup>() .Build(); } }

Executar a aplicação

Page 8: Publicar uma aplicação ASP.NET Core com base de dados ...mouta/ARQSI-2017-2018-1Sem/publishAspNetCoreWebA… · Publicar uma aplicação ASP.NET Core com base de dados SqlServer

Inspecionar a base de dados

View > SQL Server Object Explorer, expandir (localdb)\MSSQLLocalDB, Databases,

TesteWebApiAspNetContext, Tables.

Dbo.Medicamento > View Data

Page 9: Publicar uma aplicação ASP.NET Core com base de dados ...mouta/ARQSI-2017-2018-1Sem/publishAspNetCoreWebA… · Publicar uma aplicação ASP.NET Core com base de dados SqlServer

3. Criar o Website no Azure

Browser > https://portal.azure.com/ + Novo (+ New) > Web + Móvel (Web + Mobile) > Aplicação Web (Web App) Nome da aplicação: TesteWebApiAspNet Subscrição: Microsoft Imagine Grupo de Recursos: . Criar novo TesteWebApiAspNet Plano de Serviço de Aplicações: planoServicoApp (West Europe) Afixar ao dashboard Criar (Create)

Page 10: Publicar uma aplicação ASP.NET Core com base de dados ...mouta/ARQSI-2017-2018-1Sem/publishAspNetCoreWebA… · Publicar uma aplicação ASP.NET Core com base de dados SqlServer

4. Obter o perfil para publicação (Get publish profile)

Menu superior > Get publish profile

Page 11: Publicar uma aplicação ASP.NET Core com base de dados ...mouta/ARQSI-2017-2018-1Sem/publishAspNetCoreWebA… · Publicar uma aplicação ASP.NET Core com base de dados SqlServer

Guardar

Ficheiro TesteWebApiAspNet.PublishSettings:

<publishData>

<publishProfile

profileName="TesteWebApiAspNet - Web Deploy"

publishMethod="MSDeploy"

publishUrl="testewebapiaspnet.scm.azurewebsites.net:443"

msdeploySite="TesteWebApiAspNet"

userName="$TesteWebApiAspNet"

userPWD="KJkNn1xWtsHaLk89WfWezrhGtEa18Gx7Qvx9CHTMkNviKnmpxwoTfe3r0vbt"

destinationAppUrl="http://testewebapiaspnet.azurewebsites.net"

SQLServerDBConnectionString=""

mySQLDBConnectionString=""

hostingProviderForumLink=""

controlPanelLink="http://windows.azure.com"

webSystem="WebSites">

<databases />

</publishProfile>

<publishProfile

profileName="TesteWebApiAspNet - FTP"

publishMethod="FTP"

publishUrl="ftp://waws-prod-am2-161.ftp.azurewebsites.windows.net/site/wwwroot"

ftpPassiveMode="True"

userName="TesteWebApiAspNet\$TesteWebApiAspNet"

userPWD="KJkNn1xWtsHaLk89WfWezrhGtEa18Gx7Qvx9CHTMkNviKnmpxwoTfe3r0vbt"

estinationAppUrl="http://testewebapiaspnet.azurewebsites.net"

SQLServerDBConnectionString=""

mySQLDBConnectionString=""

hostingProviderForumLink=""

controlPanelLink="http://windows.azure.com"

webSystem="WebSites">

databases />

</publishProfile>

</publishData>

Page 12: Publicar uma aplicação ASP.NET Core com base de dados ...mouta/ARQSI-2017-2018-1Sem/publishAspNetCoreWebA… · Publicar uma aplicação ASP.NET Core com base de dados SqlServer

5. Publicar a aplicação no Azure

Visual Studio 2017 >

Bt. dir. do rato em cima do nome do projeto (TesteWebApiAspNet) > Publish…

Na janela “Publish” clicar na seta para selecionar o modo de publicação “Import profile”

Publish.

Surge a janela “Import Publish Settings File” através da qual selecionamos o ficheiro

TesteWebApiAspNet.PublishSettings gravado anteriormente.

Page 13: Publicar uma aplicação ASP.NET Core com base de dados ...mouta/ARQSI-2017-2018-1Sem/publishAspNetCoreWebA… · Publicar uma aplicação ASP.NET Core com base de dados SqlServer
Page 14: Publicar uma aplicação ASP.NET Core com base de dados ...mouta/ARQSI-2017-2018-1Sem/publishAspNetCoreWebA… · Publicar uma aplicação ASP.NET Core com base de dados SqlServer

6. Criar base de dados no portal Azure

No menu do lado esquerdo selecionar

“SQL databases” (Bases de dados SQL)

Clicar no botão “+ Adicionar” do menu superior, para criar uma base de dados

Page 15: Publicar uma aplicação ASP.NET Core com base de dados ...mouta/ARQSI-2017-2018-1Sem/publishAspNetCoreWebA… · Publicar uma aplicação ASP.NET Core com base de dados SqlServer
Page 16: Publicar uma aplicação ASP.NET Core com base de dados ...mouta/ARQSI-2017-2018-1Sem/publishAspNetCoreWebA… · Publicar uma aplicação ASP.NET Core com base de dados SqlServer

Copiar a connection string

e colocá-la na secção ConnectionStrings do ficheiro appsettings.json do projeto VS 2017

Page 17: Publicar uma aplicação ASP.NET Core com base de dados ...mouta/ARQSI-2017-2018-1Sem/publishAspNetCoreWebA… · Publicar uma aplicação ASP.NET Core com base de dados SqlServer

Substituindo {your_username} e {your_password} nesta ConnectionString pelas credenciais

criadas anteriormente para o servidor de base de dados.

Gravar o ficheiro appsettings.json.

Publicar novamente