Distribuzione di un'applicazione Web ASP.NET con SQL Server Compact con Visual Studio o Visual Web Developer: distribuzione in IIS come ambiente di test - 5 di 12

di Tom Dykstra

Scaricare il progetto iniziale

Questa serie di esercitazioni illustra come distribuire (pubblicare) un progetto di applicazione Web ASP.NET che include un database sql Server Compact usando Visual Studio 2012 RC o Visual Studio Express 2012 RC per Web. È anche possibile usare Visual Studio 2010 se si installa l'aggiornamento di pubblicazione Web. Per un'introduzione alla serie, vedere la prima esercitazione della serie.

Per un'esercitazione che illustra le funzionalità di distribuzione introdotte dopo la versione RC di Visual Studio 2012, illustra come distribuire edizioni di SQL Server diverse da SQL Server Compact e illustra come eseguire la distribuzione nelle app Web del servizio app di Azure, vedere ASP.NET distribuzione Web con Visual Studio.

Informazioni generali

Questa esercitazione illustra come distribuire un'applicazione Web ASP.NET in IIS nel computer locale.

Quando si sviluppa un'applicazione, in genere si testa eseguendola in Visual Studio. Per impostazione predefinita, questo significa che si usa Visual Studio Development Server (noto anche come Cassini). Visual Studio Development Server semplifica il test durante lo sviluppo in Visual Studio, ma non funziona esattamente come IIS. Di conseguenza, è possibile che un'applicazione venga eseguita correttamente quando viene testata in Visual Studio, ma non riesce quando viene distribuita in IIS in un ambiente di hosting.

È possibile testare l'applicazione in modo più affidabile in questi modi:

  1. Usare IIS Express o IIS completo invece del server di sviluppo di Visual Studio quando si esegue il test in Visual Studio durante lo sviluppo. Questo metodo in genere emula in modo più accurato il modo in cui il sito verrà eseguito in IIS. Tuttavia, questo metodo non testa il processo di distribuzione o verifica che il risultato del processo di distribuzione venga eseguito correttamente.
  2. Distribuire l'applicazione in IIS nel computer di sviluppo usando lo stesso processo che verrà usato in un secondo momento per distribuirlo nell'ambiente di produzione. Questo metodo convalida il processo di distribuzione oltre a convalidare che l'applicazione venga eseguita correttamente in IIS.
  3. Distribuire l'applicazione in un ambiente di test il più vicino possibile all'ambiente di produzione. Poiché l'ambiente di produzione per queste esercitazioni è un provider di hosting di terze parti, l'ambiente di test ideale sarebbe un secondo account con il provider di hosting. Questo secondo account viene usato solo per i test, ma viene configurato allo stesso modo dell'account di produzione.

Questa esercitazione illustra i passaggi per l'opzione 2. Le linee guida per l'opzione 3 vengono fornite alla fine dell'esercitazione Distribuzione nell'ambiente di produzione e alla fine di questa esercitazione sono disponibili collegamenti alle risorse per l'opzione 1.

Promemoria: se viene visualizzato un messaggio di errore o qualcosa non funziona durante l'esercitazione, assicurarsi di controllare la pagina di risoluzione dei problemi.

Configurazione dell'applicazione per essere eseguita con attendibilità media

Prima di installare IIS e distribuirlo, si modificherà un'impostazione di file Web.config per rendere il sito più eseguibile come in un tipico ambiente di hosting condiviso.

I provider di hosting in genere eseguono il sito Web con attendibilità media, il che significa che non è consentito eseguire alcune operazioni. Ad esempio, il codice dell'applicazione non può accedere al Registro di sistema di Windows e non può leggere o scrivere file esterni alla gerarchia di cartelle dell'applicazione. Per impostazione predefinita, l'applicazione viene eseguita con attendibilità elevata nel computer locale, il che significa che l'applicazione potrebbe essere in grado di eseguire operazioni che potrebbero non riuscire durante la distribuzione nell'ambiente di produzione. Pertanto, per riflettere più accuratamente l'ambiente di produzione, configurerete l'applicazione per l'esecuzione in attendibilità media.

Nel file Web.config dell'applicazione aggiungere un elemento trust nell'elemento system.web , come illustrato in questo esempio.

<configuration>
  <!-- Settings -->
  <system.web>
    <trust level="Medium" />
    <!-- Settings -->
  </system.web>
</configuration>

L'applicazione verrà ora eseguita con attendibilità media in IIS anche nel computer locale. Questa impostazione consente di intercettare il prima possibile qualsiasi tentativo dell'applicazione di eseguire un'operazione che fallirebbe in produzione.

Annotazioni

Se si usano migrazioni Code First di Entity Framework, assicurarsi di avere installato la versione 5.0 o successiva. In Entity Framework versione 4.3 le migrazioni richiedono l'attendibilità totale per aggiornare lo schema del database.

Installazione di IIS e distribuzione Web

Per eseguire la distribuzione in IIS nel computer di sviluppo, è necessario che SIA installato IIS e Distribuzione Web. Questi non sono inclusi nella configurazione predefinita di Windows 7. Se IIS e Distribuzione Web sono già stati installati, passare alla sezione successiva.

L'uso del programma di installazione della piattaforma Web è il modo migliore per installare IIS e Distribuzione Web, perché il programma di installazione della piattaforma Web installa una configurazione consigliata per IIS e installa automaticamente i prerequisiti per IIS e Distribuzione Web, se necessario.

Per eseguire Il programma di installazione della piattaforma Web per installare IIS e Distribuzione Web, usare il collegamento seguente. Se IIS, Distribuzione Web o uno dei relativi componenti necessari è già installato, il programma di installazione della piattaforma Web installa solo ciò che manca.

Impostazione del pool di applicazioni predefinito su .NET 4

Dopo l'installazione di IIS, eseguire Gestione IIS per assicurarsi che .NET Framework versione 4 sia assegnato al pool di applicazioni predefinito.

Dal menu Start di Windows selezionare Esegui, immettere "inetmgr" e quindi fare clic su OK. Se il comando Esegui non è presente nel menu Start , è possibile premere il tasto Windows e R per aprirlo. In alternativa, fare clic con il pulsante destro del mouse sulla barra delle applicazioni, scegliere Proprietà, selezionare la scheda Menu Start , fare clic su Personalizza e scegliere Esegui comando.

Nel riquadro Connessioni espandere il nodo server e selezionare Pool di applicazioni. Nel riquadro Pool di applicazioni , se DefaultAppPool è assegnato a .NET Framework versione 4, come illustrato nella figura seguente, passare alla sezione successiva.

Inetmgr_showing_4.0_app_pools

Se vengono visualizzati solo due pool di applicazioni e entrambi sono impostati su .NET Framework 2.0, è necessario installare ASP.NET 4 in IIS:

  • Aprire una finestra del prompt dei comandi facendo clic con il pulsante destro del mouse sul prompt dei comandi nel menu Start di Windows e scegliendo Esegui come amministratore. Eseguire quindiaspnet_regiis.exe per installare ASP.NET 4 in IIS usando i comandi seguenti. (Nei sistemi a 64 bit sostituire "Framework" con "Framework64".)

    cd %windir%\Microsoft.NET\Framework\v4.0.30319
    aspnet_regiis.exe –iru
    

    aspnet_regiis_installing_ASP.NET_4

    Questo comando crea nuovi pool di applicazioni per .NET Framework 4, ma il pool di applicazioni predefinito sarà ancora impostato su 2.0. Si distribuirà un'applicazione destinata a .NET 4 a tale pool di applicazioni, quindi è necessario modificare il pool di applicazioni in .NET 4.

Se hai chiuso Gestione IIS, eseguilo nuovamente, espandi il nodo del server e fai clic su Pool di applicazioni per visualizzare di nuovo il riquadro Pool di applicazioni.

Nel riquadro Pool di applicazioni fare clic su DefaultAppPoole quindi nel riquadro Azioni fare clic su Impostazioni di base.

Inetmgr_selezione_delle_Impostazioni_Di_Base_per_app_pool

Nella finestra di dialogo Modifica pool di applicazioni modificare la versione di .NET Frameworkin .NET Framework v4.0.30319 e fare clic su OK.

Selezione_di_.NET_4_per_DefaultAppPool

È ora possibile eseguire la pubblicazione in IIS.

Pubblicazione in IIS

Esistono diversi modi per eseguire la distribuzione con Visual Studio 2010 e Distribuzione Web:

  • Utilizzare la pubblicazione con un solo clic in Visual Studio.
  • Creare un pacchetto di distribuzione e installarlo usando l'interfaccia utente di Gestione IIS. Il pacchetto di distribuzione è costituito da un file.zip che contiene tutti i file e i metadati necessari per installare un sito in IIS.
  • Creare un pacchetto di distribuzione e installarlo usando la riga di comando.

Il processo eseguito nelle esercitazioni precedenti per configurare Visual Studio per automatizzare le attività di distribuzione si applica a tutti questi tre metodi. In queste esercitazioni si userà il primo di questi metodi. Per informazioni sull'uso dei pacchetti di distribuzione, vedere ASP.NET Mappa contenuto distribuzione.

Prima della pubblicazione, assicurarsi di eseguire Visual Studio in modalità amministratore. Nel menu Start di Windows 7 fare clic con il pulsante destro del mouse sull'icona per la versione di Visual Studio in uso e scegliere Esegui come amministratore. La modalità amministratore è necessaria per la pubblicazione solo quando si esegue la pubblicazione in IIS nel computer locale.

In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto ContosoUniversity (non sul progetto ContosoUniversity.DAL) e scegliere Pubblica.

Viene visualizzata la procedura guidata Pubblica sito Web .

Publish_Web_wizard_Profile_tab

Nell'elenco a discesa selezionare <Nuovo...>.

Nella finestra di dialogo Nuovo profilo immettere "Test" e quindi fare clic su OK.

New_Profile_dialog_box

Questo nome corrisponde al nodo centrale del file di trasformazione Web.Test.config creato in precedenza. Questa corrispondenza è ciò che provoca l'applicazione delle trasformazioni di Web.Test.config quando pubblichi utilizzando questo profilo.

La procedura guidata passa automaticamente alla scheda Connessione .

Nella casella URL servizio immettere localhost.

Nella casella Sito/applicazione immettere Sito Web predefinito/ContosoUniversity.

Nella casella URL di destinazione immettere http://localhost/ContosoUniversity.

L'impostazione URL di destinazione non è obbligatoria. Al termine della distribuzione dell'applicazione, Visual Studio apre automaticamente il browser predefinito a questo URL. Se non si vuole che il browser venga aperto automaticamente dopo la distribuzione, lasciare vuota questa casella.

Publish_Web_wizard_Connection_tab_Test

Fare clic su Convalida connessione per verificare che le impostazioni siano corrette ed è possibile connettersi a IIS nel computer locale.

Un segno di spunta verde verifica che la connessione sia riuscita.

Publish_Web_wizard_Connection_tab_validated

Fare clic su Avanti per passare alla scheda Impostazioni .

La casella di riepilogo a discesa Configurazione specifica la configurazione di compilazione da distribuire. Il valore predefinito è Release, che è quello desiderato.

Lasciare deselezionata la casella di controllo Rimuovi file aggiuntivi nella destinazione . Poiché si tratta della prima distribuzione, non ci saranno ancora file nella cartella di destinazione.

Nella sezione Database immettere il valore seguente nella casella della stringa di connessione per SchoolContext:

Data Source=|DataDirectory|School-Prod.sdf

Il processo di distribuzione inserisce questa stringa di connessione nel file di Web.config distribuito perché è selezionata l'opzione Usa questa stringa di connessione in fase di esecuzione .

In SchoolContext selezionare Applica migrazioni Code First. Questa opzione fa sì che il processo di distribuzione configuri il file Web.config distribuito per specificare l'inizializzatore MigrateDatabaseToLatestVersion . Questo inizializzatore aggiorna automaticamente il database alla versione più recente quando l'applicazione accede al database per la prima volta dopo la distribuzione.

Nella casella stringa di connessione per DefaultConnection immettere il valore seguente:

Data Source=|DataDirectory|aspnet-Prod.sdf

Lascia deselezionato Aggiorna database. Il database di appartenenza verrà distribuito copiando il file con estensione sdf in App_Data e non si vuole che il processo di distribuzione eselabori altre operazioni con questo database.

Publish_Web_wizard_Settings_tab_Test

Fare clic su Avanti per passare alla scheda Anteprima .

Nella scheda Anteprima fare clic su Avvia anteprima per visualizzare un elenco dei file che verranno copiati.

Publish_Web_wizard_Preview_tab_Test

Pubblica_Navigatore_Web_Scheda_anteprima_Test_con_elenco_file

Fare clic su Pubblica.

Se Visual Studio non è in modalità amministratore, è possibile che venga visualizzato un messaggio di errore che indica un errore di autorizzazione. In tal caso, chiudere Visual Studio, aprirlo in modalità amministratore e riprovare a pubblicare.

Se Visual Studio è in modalità amministratore, la finestra Output segnala la compilazione e la pubblicazione riuscite.

Output_window_publish_Test

Il browser si apre automaticamente alla home page di Contoso University in esecuzione in IIS nel computer locale.

Screenshot della finestra di Internet Explorer, che mostra l'indicatore dell'ambiente Contoso University è Test anziché Dev.

Test nell'ambiente di test

Si noti che l'indicatore dell'ambiente mostra "(Test)" anziché "(Dev)", che indica che la trasformazione Web.config per l'indicatore di ambiente è stata completata correttamente.

Screenshot della finestra di Internet Explorer che mostra che l'indicatore dell'ambiente di Contoso University è impostato su Test invece che su Dev.

Eseguire la pagina Students per verificare che il database distribuito non abbia studenti. Quando si seleziona questa pagina, il caricamento potrebbe richiedere alcuni minuti perché Code First crea il database e quindi esegue il Seed metodo . Questa operazione non è stata eseguita quando si era nella home page perché l'applicazione non ha ancora provato ad accedere al database.

Students_page_Test

Eseguire la pagina Instructors per verificare che Code First abbia eseguito il seeding del database con i dati dell'insegnante:

Instructors_page_Test

Selezionare Aggiungi studenti dal menu Studenti , aggiungere uno studente e quindi visualizzare il nuovo studente nella pagina Studenti per verificare che sia possibile scrivere correttamente nel database:

Aggiungi_Studenti_pagina_Test

Pagina_studenti_con_nuovo_studente_Test

Scegliere Aggiorna crediti dal menu Corsi. La pagina Aggiorna crediti richiede autorizzazioni di amministratore, quindi viene visualizzata la pagina Accedi . Immettere le credenziali dell'account amministratore create in precedenza ("admin" e "Pas$w0rd"). Viene visualizzata la pagina Aggiorna crediti , che verifica che l'account amministratore creato nell'esercitazione precedente sia stato distribuito correttamente nell'ambiente di test.

Test_Pagina_di_Accesso

Update_Credits_page_Test

Verificare che esista una cartella Elmah con solo il file segnaposto.

Elmah_folder_Test

Revisione delle modifiche Web.config automatiche per le migrazioni Code First

Aprire il fileWeb.config nell'applicazione distribuita in C:\inetpub\wwwroot\ContosoUniversity ed è possibile vedere dove il processo di distribuzione ha configurato Migrazioni Code First per aggiornare automaticamente il database alla versione più recente.

Screenshot che evidenzia dove il processo di distribuzione ha configurato Migrazioni Code First per aggiornare automaticamente il database alla versione più recente.

Il processo di distribuzione ha anche creato una nuova stringa di connessione per le migrazioni Code First da usare esclusivamente per l'aggiornamento dello schema del database:

DatabasePublish_connection_string

Questa stringa di connessione aggiuntiva consente di specificare un account utente per gli aggiornamenti dello schema del database e un account utente diverso per l'accesso ai dati dell'applicazione. Ad esempio, è possibile assegnare il ruolo di db_owner alle Migrazioni Code First e i ruoli di db_datareader e db_datawriter all'applicazione. Si tratta di un modello di difesa avanzata comune che impedisce al codice potenzialmente dannoso nell'applicazione di modificare lo schema del database. Ad esempio, questo potrebbe verificarsi in un attacco SQL injection riuscito. Questo modello non viene usato da queste esercitazioni. Non si applica a SQL Server Compact e non si applica quando si esegue la migrazione a SQL Server in un'esercitazione successiva di questa serie. Il sito Cytanium offre un solo account utente per l'accesso al database di SQL Server creato in Cytanium. Se è possibile implementare questo modello nello scenario, è possibile eseguire questa operazione eseguendo la procedura seguente:

  1. Nella scheda Impostazioni della pubblicazione guidata Web, immettere la stringa di connessione che specifica un utente con autorizzazioni di aggiornamento completo dello schema del database e deselezionare la casella Usa questa stringa di connessione in fase di esecuzione. Nel file di Web.config distribuito diventa la DatabasePublish stringa di connessione.
  2. Creare una trasformazione del file Web.config per la stringa di connessione che si vuole usare nell'applicazione in fase di esecuzione.

L'applicazione è stata ora distribuita in IIS sul computer di sviluppo ed è stata testata lì. Questo verifica che il processo di distribuzione abbia copiato il contenuto dell'applicazione nel percorso corretto (esclusi i file che non si desidera distribuire), e che Web Deploy abbia configurato correttamente IIS durante la distribuzione. Nell'esercitazione successiva si eseguirà un altro test per trovare un'attività di distribuzione che non è ancora stata eseguita: impostazione delle autorizzazioni per le cartelle nella cartella Elmah .

Altre informazioni

Per informazioni sull'esecuzione di IIS o IIS Express in Visual Studio, vedere le risorse seguenti: