Esercitazione: Distribuire un'app ASP.NET in Azure con il database SQL di Azure
Servizio app di Azure offre un servizio di hosting Web con scalabilità elevata e funzioni di auto-correzione. Questa esercitazione illustra come distribuire un'app ASP.NET basata sui dati nel servizio app e connetterla al database SQL di Azure. Al termine sarà disponibile un'app ASP.NET in esecuzione in Azure e connessa al database SQL.
In questa esercitazione apprenderai a:
- Creare un database nel database SQL di Azure
- Connettere un'app ASP.NET al database SQL
- Distribuire l'app in Azure
- Aggiornare il modello di dati e ridistribuire l'app
- Eseguire lo streaming dei log da Azure al terminale
Se non si ha una sottoscrizione di Azure, creare un account Azure gratuito prima di iniziare.
Prerequisiti
Per completare questa esercitazione:
Installare Visual Studio 2022 con i carichi di lavoro Sviluppo ASP.NET e Web e Sviluppo di Azure.
Se Visual Studio è già stato installato, aggiungere i carichi di lavoro in Visual Studio facendo clic su Strumenti>Ottieni strumenti e funzionalità.
Scaricare l'esempio
Estrarre (decomprimere) il file dotnet-sqldb-tutorial-master.zip.
Il progetto di esempio contiene un'app CRUD (create-read-update-delete) ASP.NET MVC di base che usa Code First di Entity Framework.
Eseguire l'app
Aprire il file dotnet-sqldb-tutorial-master/DotNetAppSqlDb.sln in Visual Studio.
Digitare
F5
per eseguire l'app. L'app viene visualizzata nel browser predefinito.Nota
Se sono stati installati solo Visual Studio e i prerequisiti, potrebbe essere necessario installare i pacchetti mancanti tramite NuGet.
Selezionare il collegamento Crea nuovo e creare due elementi Attività.
Testare i collegamenti Modifica, Dettagli ed Elimina.
L'app usa un contesto di database per connettersi al database. Nell'esempio il contesto di database usa una stringa di connessione denominata MyDbConnection
. La stringa di connessione è impostata nel file Web.config e il file Models\MyDatabaseContext.cs include un riferimento alla stringa. Il nome della stringa di connessione viene usato più avanti nell'esercitazione per connettere l'app Azure a un database SQL di Azure.
Pubblicare un'applicazione ASP.NET in Azure
In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto DotNetAppSqlDb e selezionare Pubblica.
Selezionare Azure come destinazione e fare clic su Avanti.
Verificare che Servizio app di Azure (Windows) sia selezionato e fare clic su Avanti.
Accedere e aggiungere un'app
Nella finestra di dialogo Pubblica fare clic su Accedi.
Accedere alla sottoscrizione di Azure. Se si è già connessi a un account Microsoft, verificare che l'account contenga la sottoscrizione di Azure. Se l'account Microsoft a cui si è connessi non include la sottoscrizione di Azure, fare clic su di esso per aggiungere l'account corretto.
Nel riquadro Istanze del servizio app fare clic su +.
Configurare il nome dell'app Web
È possibile mantenere il nome dell'app Web generato o modificarlo in un altro nome univoco (i caratteri validi sono a-z
, 0-9
e -
). Il nome dell'app Web viene usato come parte dell'URL predefinito per l'app (<app_name>.azurewebsites.net
, dove <app_name>
è il nome dell'app Web). Il nome dell'app Web deve essere univoco in tutte le app di Azure.
Nota
Non selezionare ancora Crea.
Creare un gruppo di risorse
Un gruppo di risorse è un contenitore logico in cui vengono distribuite e gestite risorse di Azure come app Web, database e account di archiviazione. Ad esempio, si può scegliere in un secondo momento di eliminare l'intero gruppo di risorse in un unico semplice passaggio.
Accanto a Gruppo di risorse fare clic su Nuovo.
Assegnare al gruppo di risorse il nome myResourceGroup.
Creare un piano di servizio app
Un piano di servizio app specifica la località, le dimensioni e le funzionalità della server farm Web che ospita l'app. Quando si ospitano più app, è possibile limitare i costi configurando le app Web in modo che condividano un singolo piano di servizio app.
I piani di servizio app definiscono:
- Area (ad esempio Europa settentrionale, Stati Uniti orientali o Asia sud-orientale)
- Dimensione dell'istanza (Small, Medium o Large)
- Numero di scala (da 1 a 20 istanze)
- SKU (Gratuito, Condiviso, Basic, Standard o Premium)
Accanto a Piano di hosting fare clic su Nuovo.
Nella finestra di dialogo Configura piano di servizio app configurare il nuovo piano di servizio app con le impostazioni seguenti e fare clic su OK:
Impostazione Valore suggerito Ulteriori informazioni Piano di servizio app myAppServicePlan Piani del servizio app Location Europa occidentale Aree di Azure Dimensione Gratuito Piani tariffari Fare clic su Crea e attendere che vengano create le risorse di Azure.
La finestra di dialogo Pubblica mostra le risorse configurate. Fare clic su Fine.
Creare un server e un database
Prima di creare un database è necessario un server SQL logico. Un server SQL logico è un costrutto logico che contiene un gruppo di database gestiti come gruppo.
Nella finestra di dialogo Pubblica scorrere verso il basso fino alla sezione Dipendenze del servizio. Accanto a Database SQL Server fare clic su Configura.
Nota
Assicurarsi di configurare il database SQL dalla pagina Pubblica anziché dalla pagina Servizi connessi.
Selezionare Database SQL di Azure e fare clic su Avanti.
Nella finestra di dialogo Configura database SQL di Azure fare clic su +.
Accanto a Server di database fare clic su Nuovo.
Il nome del server viene usato come parte dell'URL predefinito per il server
<server_name>.database.windows.net
. Deve essere univoco in tutti i server di Azure SQL. Sostituire il nome del server con quello desiderato.Aggiungere un nome utente e una password di amministratore. Per i requisiti di complessità delle password, vedere Criteri password.
Prendere nota del nome utente e della password. Saranno necessari per gestire il server in un secondo momento.
Importante
Anche se la password nelle stringhe di connessione è mascherata (sia in Visual Studio che nel servizio app), il fatto che venga mantenuta da qualche parte amplia la superficie di attacco dell'app. Il servizio app può usare identità del servizio gestito per eliminare tale rischio rimuovendo del tutto l'esigenza di mantenere i segreti nel codice o nella configurazione dell'app. Per altre informazioni, vedere Passaggi successivi.
Fare clic su OK.
Nella finestra di dialogo Database SQL di Azure mantenere il Nome del database generato predefinito. Selezionare Crea e attendere che vengano create le risorse del database.
Configurare la connessione al database
Al termine della creazione guidata delle risorse del database, fare clic su Avanti.
In Nome stringa di connessione del database digitare MyDbConnection. Questo nome deve corrispondere alla stringa di connessione cui viene fatto riferimento in Models\MyDatabaseContext.cs.
In Nome utente della connessione di database e Password della connessione di database digitare il nome utente e la password dell'amministratore usati in Creare un server.
Assicurarsi che Impostazioni app di Azure sia selezionato e fare clic su Fine.
Nota
Se viene invece visualizzata l'opzione File dei segreti utente locale, il database SQL è stato configurato dalla pagina Servizi connessi anziché dalla pagina Pubblica.
Attendere il completamento della configurazione guidata e fare clic su Chiudi.
Distribuire l'app ASP.NET
Nella scheda Pubblica scorrere verso l'alto e fare clic su Pubblica. Dopo aver distribuito l'app ASP.NET in Azure. Il browser predefinito viene avviato con l'URL dell'app distribuita.
Aggiungere alcune attività.
Complimenti. L'applicazione ASP.NET basata sui dati è in esecuzione nel Servizio app di Azure.
Accedere al database in locale
Visual Studio consente di esplorare e gestire facilmente il nuovo database in Azure in Esplora oggetti di SQL Server. Il nuovo database ha già aperto il firewall per l'app di Servizio app creata. Per accedervi dal computer locale (ad esempio da Visual Studio), è però necessario aprire un firewall per l'indirizzo IP pubblico del computer locale. Se il provider di servizi Internet cambia l'indirizzo IP pubblico, è necessario riconfigurare il firewall per accedere nuovamente al database di Azure.
Creare una connessione al database
Dal menu Visualizza selezionare Esplora oggetti di SQL Server.
Nella parte superiore di Esplora oggetti di SQL Server fare clic sul pulsante Aggiungi istanza di SQL Server.
Configurare la connessione al database
Nella finestra di dialogo Connetti espandere il nodo Azure. Vengono visualizzate tutte le istanze del database SQL di Azure.
Selezionare il database creato in precedenza. La connessione creata in precedenza viene inserita automaticamente nella parte inferiore.
Digitare la password di amministratore di database creata in precedenza e fare clic su Connetti.
Consentire la connessione client dal computer
Viene visualizzata la finestra di dialogo Crea nuova regola del firewall. Per impostazione predefinita, un server consente solo le connessioni ai relativi database dai servizi di Azure, ad esempio dall'app Azure. Per connettersi al database dall'esterno di Azure, creare una regola del firewall a livello di server. La regola del firewall autorizza l'indirizzo IP pubblico del computer locale.
Nella finestra di dialogo è già specificato l'indirizzo IP pubblico del computer.
Assicurarsi che l'opzione Aggiungi IP client sia selezionata e fare clic su OK.
Dopo che Visual Studio ha completato la creazione dell'impostazione del firewall per l'istanza del database SQL, la connessione viene visualizzata in Esplora oggetti di SQL Server.
In questa posizione è possibile eseguire le operazioni di database più comuni, ad esempio eseguire query, creare visualizzazioni e stored procedure e così via.
Espandere la connessione >Database><database>>Tabelle. Fare clic con il pulsante destro del mouse sulla tabella
Todoes
e selezionare Visualizza dati.
Aggiornare l'app con Migrazioni Code First
Per aggiornare il database e l'app in Azure è possibile usare gli strumenti noti di Visual Studio. In questo passaggio si usa Migrazioni Code First di Entity Framework per apportare una modifica allo schema del database e pubblicarlo in Azure.
Per altre informazioni sull'uso di Migrazioni Code First di Entity Framework, vedere Getting Started with Entity Framework 6 Code First using MVC 5 (Introduzione a Code First di Entity Framework 6 con MVC 5).
Aggiornare il modello di dati
Aprire Models\Todo.cs nell'editor di codice. Aggiungere la proprietà seguente alla classe ToDo
:
public bool Done { get; set; }
Eseguire Migrazioni Code First in locale
Eseguire alcuni comandi per eseguire gli aggiornamenti del database locale.
Nel menu Strumenti fare clic su Gestione pacchetti NuGet>Console di Gestione pacchetti.
Nella finestra Console di Gestione pacchetti abilitare le migrazioni Code First:
Enable-Migrations
Aggiungere una migrazione:
Add-Migration AddProperty
Aggiornare il database locale:
Update-Database
Digitare
Ctrl+F5
per eseguire l'app. Testare i collegamenti Modifica, Dettagli e Crea.
Se l'applicazione viene caricata senza errori, l'esecuzione di Migrazioni Code First è stata completata. La pagina, tuttavia, può sembrare sempre uguale perché la logica dell'applicazione non usa ancora la nuova proprietà.
Usare la nuova proprietà
Apportare alcune modifiche al codice per usare la proprietà Done
. Per motivi di semplicità in questa esercitazione vengono modificate solo le visualizzazioni Index
e Create
per visualizzare la proprietà.
Aprire Controllers\TodosController.cs.
Trovare il metodo
Create()
alla riga 52 e aggiungereDone
all'elenco delle proprietà nell'attributoBind
. Al termine, la firma del metodoCreate()
è simile al codice seguente:public ActionResult Create([Bind(Include = "Description,CreatedDate,Done")] Todo todo)
Aprire Views\Todos\Create.cshtml.
Nel codice Razor viene visualizzato un elemento
<div class="form-group">
che usamodel.Description
e quindi un altro elemento<div class="form-group">
che usamodel.CreatedDate
. Immediatamente dopo questi due elementi, aggiungere un altro elemento<div class="form-group">
che usamodel.Done
:<div class="form-group"> @Html.LabelFor(model => model.Done, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> <div class="checkbox"> @Html.EditorFor(model => model.Done) @Html.ValidationMessageFor(model => model.Done, "", new { @class = "text-danger" }) </div> </div> </div>
Aprire Views\Todos\Index.cshtml.
cercare l'elemento
<th></th>
vuoto. Immediatamente sopra l'elemento, aggiungere il codice Razor seguente:<th> @Html.DisplayNameFor(model => model.Done) </th>
Trovare l'elemento
<td>
che contiene i metodi helperHtml.ActionLink()
. Sopra questo<td>
, aggiungere un altro elemento<td>
con il codice Razor seguente:<td> @Html.DisplayFor(modelItem => item.Done) </td>
Le modifiche verranno visualizzate nelle visualizzazioni
Index
eCreate
.Digitare
Ctrl+F5
per eseguire l'app.
È ora possibile aggiungere un'attività e selezionare Fine. L'attività viene visualizzata come completata nella home page. Tenere presente che la visualizzazione Edit
non mostra il campo Done
poiché non è stata modificata la visualizzazione Edit
.
Abilitare Migrazioni Code First in Azure
Dopo aver completato la modifica al codice, inclusa la migrazione del database, è possibile eseguire la pubblicazione nell'app Azure e aggiornare anche il database SQL con Migrazioni Code First.
Fare di nuovo clic con il pulsante destro del mouse sul progetto e selezionare Pubblica.
Fare clic su Altre azioni>Modifica per aprire le impostazioni di pubblicazione.
Nell'elenco a discesa MyDatabaseContext selezionare la connessione di database per il database SQL di Azure.
Selezionare Esegui migrazione primo codice (inizia all'avvio dell'applicazione), quindi fare clic su Salva.
Pubblicare le modifiche
Dopo aver abilitato Migrazioni Code First nell'app Azure pubblicare le modifiche al codice.
Nella pagina di pubblicazione fare clic su Pubblica.
Provare di nuovo ad aggiungere attività e selezionare Fine. Le attività verranno visualizzate nella home page come completate.
Tutte le attività esistenti rimangono visualizzate. Quando si pubblica nuovamente l'applicazione ASP.NET, i dati esistenti nel database SQL non vengono persi. Inoltre, solo Migrazioni Code First modifica lo schema dei dati lasciando intatti i dati esistenti.
Eseguire lo streaming dei log delle applicazioni
È possibile eseguire lo streaming dei messaggi di traccia direttamente dall'app Azure in Visual Studio.
Aprire Controllers\TodosController.cs.
Ogni azione inizia con un metodo Trace.WriteLine()
. Questo codice viene aggiunto per illustrare come aggiungere messaggi di traccia all'app Azure.
Abilitare lo streaming dei log
Nella pagina di pubblicazione scorrere verso il basso fino alla sezione Hosting.
Nell'angolo destro fare clic su ...>Visualizza log in streaming.
Lo streaming dei log viene eseguito nella finestra Output.
I messaggi di traccia tuttavia non sono ancora visibili. Ciò avviene perché la prima volta che si seleziona Visualizza log in streaming l'app Azure imposta il livello di traccia su
Error
che comporta soltanto la registrazione degli eventi di errore (con il metodoTrace.TraceError()
).
Modificare i livelli di traccia
Per modificare i livelli di traccia per generare altri messaggi di traccia, tornare alla pagina di pubblicazione.
Nella sezione Hosting fare clic su ...>Apri nel portale di Azure.
Nella pagina di gestione del portale per l'app selezionare Log del servizio app nel menu a sinistra.
In Registrazione applicazioni (file system) selezionare Dettagli in Livello. Fare clic su Salva.
Suggerimento
È possibile provare i diversi livelli di traccia per verificare i tipi di messaggi visualizzati per ogni livello. Ad esempio, il livello Informazioni include tutti i log creati da
Trace.TraceInformation()
,Trace.TraceWarning()
eTrace.TraceError()
, ma non i log creati daTrace.WriteLine()
.Nel browser passare di nuovo all'app in http://<nome dell'app>.azurewebsites.net e quindi provare a fare clic nell'applicazione di elenco attività in Azure. Viene eseguito lo streaming dei messaggi di traccia nella finestra Output in Visual Studio.
Application: 2017-04-06T23:30:41 PID[8132] Verbose GET /Todos/Index Application: 2017-04-06T23:30:43 PID[8132] Verbose GET /Todos/Create Application: 2017-04-06T23:30:53 PID[8132] Verbose POST /Todos/Create Application: 2017-04-06T23:30:54 PID[8132] Verbose GET /Todos/Index
Arrestare lo streaming dei log
Per arrestare il servizio di streaming dei log, fare clic sul pulsante Interrompi monitoraggio nella finestra Output.
Pulire le risorse
Nei passaggi precedenti sono state create risorse di Azure in un gruppo di risorse. Se non si prevede di aver bisogno di queste risorse in futuro, è possibile eliminarle eliminando il gruppo di risorse.
- Dalla pagina Panoramica dell'app Web nel portale di Azure selezionare il collegamento myResourceGroup in Gruppo di risorse.
- Nella pagina del gruppo di risorse assicurarsi che le risorse elencate siano quelle da eliminare.
- Selezionare Elimina gruppo di risorse, digitare myResourceGroup nella casella di testo e quindi selezionare Elimina.
- Confermare di nuovo selezionando Elimina.
Passaggi successivi
Questa esercitazione ha descritto come:
- Creare un database nel database SQL di Azure
- Connettere un'app ASP.NET al database SQL
- Distribuire l'app in Azure
- Aggiornare il modello di dati e ridistribuire l'app
- Eseguire lo streaming dei log da Azure al terminale
Passare all'esercitazione successiva per apprendere come migliorare facilmente la sicurezza della connessione al database SQL di Azure.
Altre risorse:
Si vuole ottimizzare e risparmiare sulla spesa per il cloud?