Distribuzione di un'applicazione Web ASP.NET con SQL Server Compact tramite 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 SQL Server diverse da SQL Server Compact e illustra come eseguire la distribuzione in Servizio app di Azure App Web, vedere ASP.NET distribuzione Web con Visual Studio.

Panoramica

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

Quando si sviluppa un'applicazione, in genere si esegue il test in Visual Studio. Per impostazione predefinita, ciò 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 durante il test 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 seguito 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. Si userà questo secondo account solo per il test, ma verrà configurato allo stesso modo dell'account di produzione.

Questa esercitazione illustra i passaggi per l'opzione 2. Le indicazioni per l'opzione 3 sono disponibili 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 che non funziona durante l'esercitazione, assicurarsi di controllare la pagina di risoluzione dei problemi.

Configurazione dell'applicazione per l'esecuzione in attendibilità media

Prima di installare IIS e distribuirlo, si modificherà un'impostazione di file Web.config per rendere il sito più simile a quello 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 rendere l'ambiente di test più accurato riflettere l'ambiente di produzione, si configurerà l'applicazione per l'esecuzione con 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 eventuali tentativi dal codice dell'applicazione per eseguire un'operazione che non riuscirebbe nell'ambiente di produzione.

Nota

Se si usa 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à completa per aggiornare lo schema del database.

Installazione di IIS e distribuzione Web

Per eseguire la distribuzione in IIS nel computer di sviluppo, è necessario che IIS e Distribuzione Web siano installati. Queste impostazioni non sono incluse 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 preferito 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à stato installato, il programma di installazione della piattaforma Web installa solo gli elementi mancanti.

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 Connections espandere il nodo del 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 nel pool di applicazioni, quindi è necessario modificare il pool di applicazioni in .NET 4.

Se Gestione IIS è stato chiuso, eseguirlo di nuovo, espandere il nodo del server e fare 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_selecting_Basic_Settings_for_app_pool

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

Selecting_.NET_4_for_DefaultAppPool

A questo momento si è pronti per la pubblicazione in IIS.

Pubblicazione su ISS

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

  • Usare La pubblicazione con un solo clic di Visual Studio.
  • Creare un pacchetto di distribuzione e installarlo usando l'interfaccia utente di Gestione IIS. Il pacchetto di distribuzione è costituito da un file di.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 fa sì che le trasformazioni Web.Test.config vengano applicate quando si pubblica usando 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, ovvero quello desiderato.

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

Nella sezione Database immettere il valore seguente nella casella 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 causa il processo di distribuzione per configurare il file di 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

Lasciare deselezionato il database di aggiornamento . Il database di appartenenza verrà distribuito copiando il file sdf in App_Data e non si vuole che il processo di distribuzione faccia altro 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 copiati.

Publish_Web_wizard_Preview_tab_Test

Publish_Web_wizard_Preview_tab_Test_with_file_list

Fare clic su Pubblica.

Se Visual Studio non è in modalità amministratore, potrebbe essere visualizzato un messaggio di errore che indica un errore relativo alle autorizzazioni. 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 corretta compilazione e la pubblicazione.

Output_window_publish_Test

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

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

Test nell'ambiente di test

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

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

Eseguire la pagina Studenti per verificare che il database distribuito non abbia studenti. Quando si seleziona questa pagina, potrebbe richiedere alcuni minuti per caricare perché Code First crea il database e quindi esegue il Seed metodo. Non è stato fatto questo quando si era nella home page perché l'applicazione non ha ancora tentato di accedere al database.

Students_page_Test

Eseguire la pagina Instructors per verificare che Code First ha inizializzato il 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:

Add_Students_page_Test

Students_page_with_new_student_Test

Dal menu Corsi selezionare Aggiorna crediti. La pagina Aggiorna crediti richiede autorizzazioni di amministratore, quindi viene visualizzata la pagina Accesso . 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.

Log_In_page_Test

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 Migrazioni Code First

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

Screenshot che evidenzia dove il processo di distribuzione 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 Migrazioni Code First da usare esclusivamente per aggiornare lo schema del database:

DatabasePublish_connection_string

Questo stringa di connessione aggiuntivo 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 a Migrazioni Code First e db_datareader e db_datawriter ruoli all'applicazione. Si tratta di un modello comune di difesa in profondità 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 in questa serie. Il sito Cytanium offre un solo account utente per accedere al database 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 procedura guidata Pubblica Web immettere la stringa di connessione che specifica un utente con autorizzazioni di aggiornamento completo dello schema di database e deselezionare la casella di controllo Usa questa stringa di connessione in fase di esecuzione. Nel file di Web.config distribuito diventa il DatabasePublish stringa di connessione.
  2. Creare una trasformazione file Web.config per l'stringa di connessione che si vuole che l'applicazione usi in fase di esecuzione.

L'applicazione è stata ora distribuita in IIS nel computer di sviluppo e l'ha testata. In questo modo viene verificato che il processo di distribuzione ha copiato il contenuto dell'applicazione nel percorso corretto (esclusi i file che non si desidera distribuire) e che La distribuzione Web sia configurata correttamente in IIS durante la distribuzione. Nell'esercitazione successiva si eseguirà un altro test che individua 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: