Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
di Tom Dykstra
Scaricare il progetto iniziale
Questa serie di esercitazioni illustra come distribuire (pubblicare) un'applicazione Web ASP.NET in App Web del servizio app di Azure o in un provider di hosting di terze parti usando Visual Studio 2012 con Azure SDK per .NET. La maggior parte delle procedure è simile per Visual Studio 2013.
Si sviluppa un'applicazione Web per renderla disponibile agli utenti tramite Internet. Tuttavia, i tutorial di programmazione web si arrestano in genere subito dopo aver mostrato come far funzionare qualcosa sul computer di sviluppo. Questa serie di esercitazioni inizia dove le altre finiscono: hai creato un'app Web, l'hai testata ed è pronta per l'implementazione. Qual è il prossimo passo? Queste esercitazioni illustrano come eseguire la distribuzione prima in IIS nel computer di sviluppo locale per i test e quindi in Azure o in un provider di hosting di terze parti per la gestione temporanea e la produzione. L'applicazione di esempio che verrà distribuita è un progetto di applicazione Web che usa Entity Framework, SQL Server e il sistema di appartenenza ASP.NET. L'applicazione di esempio usa ASP.NET Web Form, ma le procedure illustrate si applicano anche a ASP.NET MVC e API Web.
Queste esercitazioni presuppongono che si sappia come usare ASP.NET in Visual Studio. In caso contrario, un buon punto di partenza è un tutorial base di ASP.NET Web Forms o un tutorial base di ASP.NET MVC.
Se si hanno domande che non sono direttamente correlate all'esercitazione, è possibile pubblicarle nel forum di distribuzione ASP.NET o StackOverflow.
Informazioni generali
Queste esercitazioni illustrano come distribuire un'applicazione Web ASP.NET che include database SQL Server. Distribuirai prima in IIS sul tuo computer di sviluppo locale per il test e poi in Web Apps nel servizio app di Azure e nel database SQL di Azure per lo staging e la produzione. Si vedrà come eseguire la distribuzione usando Visual Studio con un clic di pubblicazione e si vedrà come eseguire la distribuzione tramite la riga di comando.
Il numero di tutorial potrebbe rendere il processo di distribuzione scoraggiante. Infatti, le procedure di base sono semplici. Tuttavia, in situazioni reali, spesso è necessario eseguire attività di distribuzione aggiuntive, ad esempio l'impostazione delle autorizzazioni per le cartelle nel server di destinazione. Alcune di queste attività aggiuntive sono state illustrate, nella speranza che le esercitazioni non lascino informazioni che potrebbero impedire la corretta distribuzione di un'applicazione reale.
Le esercitazioni sono progettate per l'esecuzione in sequenza e ogni parte si basa sulla parte precedente. È possibile ignorare le parti che non sono rilevanti per la situazione, ma potrebbe essere necessario modificare le procedure nelle esercitazioni successive.
Pubblico previsto
Le esercitazioni sono destinate a ASP.NET sviluppatori che lavorano in ambienti in cui:
- L'ambiente di produzione è App Web del servizio app di Azure o un provider di hosting di terze parti.
- La distribuzione non è limitata a un processo di integrazione continua, ma può essere eseguita direttamente da Visual Studio.
La distribuzione dal controllo del codice sorgente tramite un processo di recapito continuo non è descritta in queste esercitazioni, ad eccezione di un'esercitazione che illustra come eseguire la distribuzione dalla riga di comando. Per informazioni sul recapito continuo, vedere le risorse seguenti:
- Integrazione continua e recapito continuo (creazione di app cloud Real-World con Windows Azure)
- Distribuire un'app Web nel servizio app di Azure
- Distribuzione di applicazioni Web in scenari aziendali (un set precedente di esercitazioni scritte per Visual Studio 2010, che contiene ancora informazioni utili per gli ambienti aziendali).
Uso di un provider di hosting di terze parti
Le esercitazioni illustrano il processo di configurazione di un account Azure e la distribuzione dell'applicazione nei Web Apps nel servizio Azure App Service per gli ambienti di staging e produzione. Tuttavia, è possibile usare le stesse procedure di base per la distribuzione in un provider di hosting di terze parti di propria scelta. Quando le esercitazioni esaminano i processi specifici di Azure, spiegano che e consigliano quali differenze è possibile prevedere in un provider di hosting di terze parti.
Distribuzione di progetti di app Web
L'applicazione di esempio scaricata e distribuita per queste esercitazioni è un progetto di applicazione Web di Visual Studio. Tuttavia, se si installa l'aggiornamento pubblicazione Web più recente per Visual Studio, è possibile usare gli stessi metodi di distribuzione e gli stessi strumenti per i progetti di app Web.
Distribuzione di progetti MVC ASP.NET
L'applicazione di esempio è un progetto Web Form ASP.NET, ma tutto ciò che si impara a fare è applicabile anche a ASP.NET MVC. Un progetto MVC di Visual Studio è solo un altro tipo di progetto di applicazione Web. L'unica differenza è che se si esegue la distribuzione in un provider di hosting che non supporta ASP.NET MVC o la versione di destinazione, è necessario assicurarsi di aver installato il pacchetto NuGet appropriato (MVC 3, MVC 4 o MVC 5) nel progetto.
Linguaggio di programmazione
L'applicazione di esempio usa C#, ma le esercitazioni non richiedono conoscenza di C# e le tecniche di distribuzione illustrate dalle esercitazioni non sono specifiche del linguaggio.
Metodi di distribuzione del database
Esistono tre modi per distribuire un database di SQL Server insieme alla distribuzione Web in Visual Studio:
- Migrazioni Code First di Entity Framework
- Provider dbDacFx Web Deploy
- Provider dbFullSql Web Deploy
In questa esercitazione si useranno i primi due di questi metodi. Il provider dbFullSql Web Deploy è un metodo legacy non più consigliato, ad eccezione di alcuni scenari specifici, ad esempio la migrazione da SQL Server Compact a SQL Server.
I metodi illustrati in questa esercitazione sono relativi ai database di SQL Server, non a SQL Server Compact. Per informazioni su come distribuire un database di SQL Server Compact, vedere Distribuzione Web di Visual Studio con SQL Server Compact.
I metodi illustrati in questa esercitazione richiedono l'uso del metodo di pubblicazione Web Deploy. Se si preferisce un metodo di pubblicazione diverso, ad esempio FTP, File System o FPSE, vedere Distribuzione di un database separatamente dalla distribuzione di applicazioni Web nella mappa del contenuto della distribuzione Web per Visual Studio e ASP.NET.
Migrazioni Code First di Entity Framework
In Entity Framework versione 4.3 Microsoft ha introdotto le migrazioni Code First. Le migrazioni Code First automatizzano il processo di apportare modifiche incrementali a un modello di dati e di propagare tali modifiche al database. Nelle versioni precedenti di Code First, in genere si lascia eliminare Entity Framework e ricreare il database ogni volta che si modifica il modello di dati. Questo non è un problema durante lo sviluppo perché i dati di test vengono facilmente ricreati, ma nell'ambiente di produzione si vuole in genere aggiornare lo schema del database senza eliminare il database. La funzionalità Migrazioni consente a Code First di aggiornare il database senza eliminarlo e crearlo nuovamente. È possibile consentire a Code First di decidere automaticamente come apportare le modifiche dello schema necessarie oppure scrivere codice che personalizza le modifiche. Per un'introduzione alle migrazioni Code First, vedere Migrazioni Code First.
Quando si distribuisce un progetto Web, Visual Studio può automatizzare il processo di distribuzione di un database gestito dalle migrazioni Code First. Quando si crea il profilo di pubblicazione, si seleziona una casella di controllo con etichetta Execute Code First Migrations (viene eseguita all'avvio dell'applicazione). Questa impostazione fa sì che il processo di distribuzione configuri automaticamente l'applicazione Web.config file nel server di destinazione in modo che Code First usi la MigrateDatabaseToLatestVersion classe di inizializzatore.
Visual Studio non esegue alcuna operazione con il database durante il processo di distribuzione. Quando l'applicazione distribuita accede al database per la prima volta dopo la distribuzione, Code First crea automaticamente il database o aggiorna lo schema del database alla versione più recente. Se l'applicazione implementa un metodo Migrations Seed, il metodo viene eseguito dopo la creazione del database o l'aggiornamento dello schema.
In questa esercitazione userai le migrazioni Code First per distribuire il database dell'applicazione.
Provider dbDacFx Web Deploy
Per un database di SQL Server non gestito da Entity Framework Code First, è possibile selezionare una casella di controllo con etichetta Aggiorna database quando si configura il profilo di pubblicazione. Durante la distribuzione iniziale, il provider dbDacFx crea tabelle e altri oggetti di database nel database di destinazione in modo che corrispondano al database di origine. Nelle distribuzioni successive, il provider determina le differenze tra i database di origine e di destinazione e aggiorna lo schema del database di destinazione in modo che corrisponda al database di origine. Per impostazione predefinita, il provider non apporta modifiche che causano la perdita di dati, ad esempio quando viene eliminata una tabella o una colonna.
Questo metodo non automatizza la distribuzione dei dati nelle tabelle di database, ma è possibile creare script per farlo e configurare Visual Studio per eseguirli durante la distribuzione. Un altro motivo per eseguire script durante la distribuzione consiste nell'apportare modifiche allo schema che non possono essere eseguite automaticamente perché causerebbero la perdita di dati.
In questa esercitazione si userà il provider dbDacFx per distribuire il database di appartenenza ASP.NET.
Risoluzione dei problemi durante questa esercitazione
Quando si verifica un errore durante la distribuzione o se il sito distribuito non viene eseguito correttamente, i messaggi di errore non forniscono sempre una soluzione ovvia. Per semplificare alcuni scenari di problemi comuni, è disponibile una pagina di riferimento per la risoluzione dei problemi . Se viene visualizzato un messaggio di errore o qualcosa non funziona durante le esercitazioni, assicurarsi di controllare la pagina di risoluzione dei problemi.
Commenti di benvenuto
I commenti sulle esercitazioni sono benvenuti e quando l'esercitazione viene aggiornata ogni sforzo verrà eseguita per tenere conto delle correzioni o dei suggerimenti per i miglioramenti forniti nei commenti dell'esercitazione.
Prerequisiti
Questa esercitazione è stata scritta per i prodotti seguenti:
- Windows 8 o Windows 7.
- Visual Studio 2012 o Visual Studio 2012 Express for Web con l'aggiornamento più recente.
- Azure SDK per Visual Studio 2012
È possibile seguire l'esercitazione usando Visual Studio 2010 SP1 o Visual Studio 2013, ma alcune schermate saranno diverse e alcune funzionalità saranno diverse.
Se si usa Visual Studio 2013, installare Azure SDK per Visual Studio 2013.
Se si usa Visual Studio 2010 SP1, installare il software seguente:
A seconda del numero di dipendenze dell'SDK già presenti nel computer, l'installazione di Azure SDK potrebbe richiedere molto tempo, da diversi minuti a mezz'ora o più. È necessario Azure SDK anche se si prevede di pubblicare in un provider di hosting di terze parti anziché in Azure, perché l'SDK include gli aggiornamenti più recenti per le funzionalità di pubblicazione Web di Visual Studio.
Annotazioni
Questa esercitazione è stata scritta con la versione 1.8.1 di Azure SDK. Da allora sono state rilasciate versioni più recenti con funzionalità aggiuntive. Le esercitazioni sono state aggiornate per menzionare queste funzionalità e collegare alle risorse che contengono altre informazioni su di esse.
Le istruzioni e le schermate sono basate su Windows 8, ma le esercitazioni spiegano le differenze per Windows 7.
Per completare l'esercitazione è necessario un altro software, ma non è necessario che sia ancora installato. L'esercitazione illustra i passaggi per installarlo quando ne hai bisogno.
Scaricare l'applicazione di esempio
L'applicazione che verrà distribuita è denominata Contoso University ed è già stata creata automaticamente. Si tratta di una versione semplificata di un sito Web universitario, basata in modo libero sull'applicazione Contoso University descritta nelle esercitazioni di Entity Framework nel sito di ASP.NET.
Dopo aver installato i prerequisiti, scaricare l'applicazione Web Contoso University. Il file.zip contiene più versioni del progetto. Per eseguire i passaggi dell'esercitazione, iniziare con il progetto che si trova nella cartella C#. Per visualizzare l'aspetto del progetto alla fine delle esercitazioni, aprire il progetto nella cartella ContosoUniversity-End.
Per preparare il progetto per seguire i passaggi del tutorial, seguire i seguenti passaggi:
Salvare i file della soluzione ContosoUniversity dalla cartella C# in una cartella denominata ContosoUniversity in qualsiasi cartella usata per l'uso dei progetti di Visual Studio.
Per impostazione predefinita, questa è la cartella seguente per Visual Studio 2012:
C:\Users\<username>\Documents\Visual Studio 2012\ProjectsPer i screenshot di questo tutorial, la cartella del progetto si trova nella directory radice dell'unità
C:.Avviare Visual Studio e aprire il progetto.
In Esplora soluzioni fare clic con il pulsante destro del mouse sulla soluzione e scegliere Abilita Ripristino pacchettiNuGet.
Costruire la soluzione.
Se si verificano errori di compilazione, ripristinare manualmente i pacchetti NuGet:
- In Esplora soluzioni fare clic con il pulsante destro del mouse sulla soluzione e quindi scegliere Gestisci pacchetti NuGet per la soluzione.
- Nella parte superiore della finestra di dialogo Gestisci pacchetti NuGet si noterà che alcuni pacchetti NuGet non sono presenti in questa soluzione. Fare clic per ripristinare. Fare clic sul pulsante Ripristina .
- Ricompila la soluzione.
Premere CTRL-F5 per eseguire l'applicazione.
L'applicazione si apre alla home page di Contoso University.
Potrebbe verificarsi un tempo di attesa durante l'avvio dell'istanza di SQL Server Express LocalDB e potrebbe verificarsi un errore di timeout se il processo richiede troppo tempo. In tal caso, avviare di nuovo il progetto.
Le pagine del sito Web sono accessibili dalla barra dei menu e consentono di eseguire le funzioni seguenti:
- Visualizzare le statistiche degli studenti (pagina Informazioni).
- Visualizzare, modificare, eliminare e aggiungere studenti.
- Visualizzare e modificare i corsi.
- Visualizzare e modificare gli insegnanti.
- Visualizzare e modificare i reparti.
Di seguito sono riportate le schermate di alcune pagine rappresentative.
Esaminare le funzionalità dell'applicazione che influiscono sulla distribuzione
Le funzionalità seguenti dell'applicazione influiscono sulla modalità di distribuzione o sulle operazioni da eseguire per distribuirla. Ognuna di queste è illustrata in modo più dettagliato nelle esercitazioni seguenti della serie.
- Contoso University usa un database di SQL Server per archiviare i dati dell'applicazione, ad esempio i nomi degli studenti e degli insegnanti. Il database contiene una combinazione di dati di test e dati di produzione e quando si esegue la distribuzione nell'ambiente di produzione è necessario escludere i dati di test.
- L'applicazione usa il sistema di appartenenza ASP.NET, che archivia le informazioni sull'account utente in un database di SQL Server. L'applicazione definisce un utente amministratore che può accedere ad alcune informazioni limitate. È necessario distribuire il database di appartenenza senza account di test, ma con un account amministratore.
- L'applicazione usa un'utilità di registrazione e segnalazione degli errori di terze parti. Questa utilità è disponibile in un assembly che deve essere implementata con l'applicazione.
- L'utilità di registrazione degli errori scrive le informazioni sugli errori nei file XML in una cartella di file. È necessario assicurarsi che l'account in cui ASP.NET venga eseguito nel sito distribuito abbia l'autorizzazione di scrittura per questa cartella ed è necessario escludere questa cartella dalla distribuzione. Altrimenti, i dati del log degli errori dell'ambiente di test potrebbero essere implementati in produzione e/o i file di log degli errori di produzione potrebbero essere eliminati.
- L'applicazione include alcune impostazioni che devono essere modificate nel file diWeb.config distribuito a seconda dell'ambiente di destinazione (test, staging o produzione) e di altre impostazioni che devono essere modificate a seconda della configurazione di compilazione (debug o versione).
- La soluzione Visual Studio include un progetto di libreria di classi. Deve essere distribuito solo l'assembly generato da questo progetto, non il progetto stesso.
Sommario
In questa prima esercitazione della serie è stato scaricato il progetto di Visual Studio di esempio e sono state esaminate le funzionalità del sito che influiscono sulla modalità di distribuzione dell'applicazione. Nelle esercitazioni seguenti si prepara per la distribuzione configurando alcuni di questi elementi da gestire automaticamente. Degli altri ti occupi manualmente.