ASP.NET distribuzione Web con Visual Studio: Introduzione

di Tom Dykstra

Scaricare il progetto iniziale

Questa serie di esercitazioni illustra come distribuire (pubblicare) un'applicazione Web ASP.NET in Servizio app di Azure App Web 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, le esercitazioni di programmazione Web in genere si arrestano subito dopo aver illustrato come lavorare sul computer di sviluppo. Questa serie di esercitazioni inizia da dove gli altri partono: è stata creata un'app Web, testata ed è pronta per iniziare. Quali sono le operazioni successive? Queste esercitazioni illustrano come eseguire la distribuzione prima in IIS nel computer di sviluppo locale per il 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 Web Forms ASP.NET, 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'esercitazione di base Web Forms ASP.NET o un'esercitazione di base ASP.NET MVC.

Se si hanno domande che non sono direttamente correlate all'esercitazione, è possibile pubblicarle nel forum di distribuzione ASP.NET o StackOverflow.

Panoramica

Queste esercitazioni consentono di distribuire un'applicazione Web ASP.NET che include SQL Server database. Si distribuirà prima in IIS nel computer di sviluppo locale per il test e quindi in App Web in Servizio app di Azure e Azure SQL Database per la gestione temporanea e l'ambiente di produzione. Verrà illustrato come eseguire la distribuzione con Visual Studio con un clic su Pubblica e verrà illustrato come eseguire la distribuzione usando la riga di comando.

Il numero di esercitazioni 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.

Destinatari

Le esercitazioni sono destinate a ASP.NET sviluppatori che lavorano in ambienti in cui:

  • L'ambiente di produzione è Servizio app di Azure App Web 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:

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 in App Web in Servizio app di Azure per la gestione temporanea e la produzione. Tuttavia, è possibile usare le stesse procedure di base per la distribuzione in un provider di hosting di terze parti a scelta. Quando le esercitazioni passano a processi univoci per 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 di Web Forms ASP.NET, ma tutto ciò che si apprenderà è 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).

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 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 che 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 destinati ai database SQL Server, non SQL Server Compact. Per informazioni su come distribuire un database 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 Distribuzione Web. 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 Migrazioni Code First. Migrazioni Code First automatizza il processo di apportare modifiche incrementali a un modello di dati e propagare tali modifiche al database. Nelle versioni precedenti di Code First, in genere si consente a Entity Framework di eliminare e ricreare il database ogni volta che si modifica il modello di dati. Questo non è un problema nello sviluppo perché i dati di test vengono facilmente ricreati, ma in 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 ricrearlo. È 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 da Migrazioni Code First. Quando si crea il profilo di pubblicazione, si seleziona una casella di controllo con l'etichetta Esegui Migrazioni Code First (viene eseguita all'avvio dell'applicazione). Questa impostazione determina la configurazione automatica del processo di distribuzione dell'applicazione Web.config file nel server di destinazione in modo che Code First usi la MigrateDatabaseToLatestVersion classe 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 si useranno Migrazioni Code First per distribuire il database dell'applicazione.

Provider dbDacFx Web Deploy

Per un database SQL Server che non è gestito da Entity Framework Code First, è possibile selezionare una casella di controllo denominata 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 cosa è diverso 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 eseguire questa operazione 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 che non funziona durante l'esecuzione delle esercitazioni, assicurarsi di controllare la pagina di risoluzione dei problemi.

Commenti benvenuti

I commenti sulle esercitazioni sono benvenuti e quando l'esercitazione viene aggiornata ogni sforzo verrà fatto per prendere in considerazione le correzioni o i suggerimenti per i miglioramenti forniti nei commenti dell'esercitazione.

Prerequisiti

Questa esercitazione è stata scritta per i prodotti seguenti:

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

Nota

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 hanno altre informazioni su di esse.

Le istruzioni e le schermate sono basate su Windows 8, ma le esercitazioni illustrano le differenze per Windows 7.

Alcuni altri software sono necessari per completare l'esercitazione, ma non è necessario che sia ancora installato. L'esercitazione illustra i passaggi per installarlo quando necessario.

Scaricare l'applicazione di esempio

L'applicazione distribuita è denominata Contoso University ed è già stata creata. È una versione semplificata di un sito Web dell'università, basata liberamente sull'applicazione Contoso University descritta nelle esercitazioni di Entity Framework sul sito di ASP.NET.

Quando sono installati 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 l'uso dei passaggi dell'esercitazione, seguire questa procedura:

  1. Salvare i file di 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\Projects

    Per le schermate in questa esercitazione, la cartella del progetto si trova nella directory radice nell'unità C: .

  2. Avviare Visual Studio e aprire il progetto.

  3. In Esplora soluzioni fare clic con il pulsante destro del mouse sulla soluzione e scegliere Abilita Ripristino pacchettoNuGet.

  4. Compilare la soluzione.

  5. Se si verificano errori di compilazione, ripristinare manualmente i pacchetti NuGet:

    1. In Esplora soluzioni fare clic con il pulsante destro del mouse sulla soluzione e quindi scegliere Gestisci pacchetti NuGet per la soluzione.
    2. Nella parte superiore della finestra di dialogo Gestisci pacchetti NuGet verranno visualizzati alcuni pacchetti NuGet mancanti da questa soluzione. Fare clic per ripristinare. Fare clic sul pulsante Ripristina .
    3. Ricompilare la soluzione.
  6. Premere CTRL+F5 per eseguire l'applicazione.

    L'applicazione viene aperta alla home page di Contoso University.

    Sviluppo home page

    Potrebbe verificarsi un tempo di attesa durante l'avvio di Visual Studio nell'istanza di LocalDB SQL Server Express e potrebbe verificarsi un errore di timeout se il processo richiede troppo tempo. In questo caso è sufficiente 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.

Sviluppo pagina studenti

Aggiungi sviluppo pagina studenti

Esaminare le funzionalità dell'applicazione che influiscono sulla distribuzione

Le funzionalità seguenti dell'applicazione influiscono su come distribuirla o su ciò che è necessario eseguire per distribuirla. Ognuna di queste è illustrata in modo più dettagliato nelle esercitazioni seguenti nella serie.

  • Contoso University usa un database 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 distribuisce in 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 SQL Server. L'applicazione definisce un utente amministratore che ha accesso ad alcune informazioni limitate. È necessario distribuire il database di appartenenza senza account di test, ma con un account amministratore.
  • L'applicazione usa una registrazione degli errori di terze parti e un'utilità di creazione di report. Questa utilità viene fornita in un assembly che deve essere distribuito con l'applicazione.
  • L'utilità di registrazione degli errori scrive le informazioni sugli errori nei file XML in una cartella file. È necessario assicurarsi che l'account in esecuzione ASP.NET nel sito distribuito disponga dell'autorizzazione di scrittura per questa cartella e che sia necessario escludere questa cartella dalla distribuzione. In caso contrario, i dati del log degli errori dall'ambiente di test potrebbero essere distribuiti nei file di log degli errori di produzione e/o di produzione.
  • L'applicazione include alcune impostazioni che devono essere modificate nel file di Web.config distribuito a seconda dell'ambiente di destinazione (test, staging o produzione) e 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. Solo l'assembly generato da questo progetto deve essere distribuito, non il progetto stesso.

Riepilogo

In questa prima esercitazione nella serie è stato scaricato il progetto di Visual Studio di esempio e le funzionalità del sito esaminate che influiscono sulla distribuzione dell'applicazione. Nelle esercitazioni seguenti si prepara la distribuzione configurando alcune di queste operazioni da gestire automaticamente. Altri si occupano manualmente.