Distribuzione di un'applicazione Web ASP.NET con SQL Server Compact tramite Visual Studio o Visual Web Developer: Distribuzione di un aggiornamento Code-Only - 8 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

Dopo la distribuzione iniziale, il lavoro di gestione e sviluppo del sito Web continua e prima di molto si vuole distribuire un aggiornamento. Questa esercitazione illustra il processo di distribuzione di un aggiornamento nel codice dell'applicazione. Questo aggiornamento non comporta una modifica del database; Nell'esercitazione successiva verranno illustrate le differenze tra la distribuzione di una modifica del database.

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.

Apportare una modifica al codice

Come semplice esempio di aggiornamento dell'applicazione, si aggiungerà alla pagina Instructors un elenco di corsi insegnato dall'insegnante selezionato.

Se si esegue la pagina Instructors , si noterà che nella griglia sono presenti collegamenti Select , ma non fanno altro che rendere grigio lo sfondo della riga.

Instructors_page

A questo punto si aggiungerà il codice che viene eseguito quando si fa clic sul collegamento Seleziona e viene visualizzato un elenco di corsi tenuti dall'insegnante selezionato.

In Instructors.aspx aggiungere il markup seguente subito dopo il controllo ErrorMessageLabelLabel :

<h3>Courses Taught</h3>
<asp:ObjectDataSource ID="CoursesObjectDataSource" runat="server" TypeName="ContosoUniversity.BLL.SchoolBL"
    DataObjectTypeName="ContosoUniversity.DAL.Course" SelectMethod="GetCoursesByInstructor">
    <SelectParameters>
        <asp:ControlParameter ControlID="InstructorsGridView" Name="PersonID" PropertyName="SelectedDataKey.Value"
            Type="Int32" />
    </SelectParameters>
</asp:ObjectDataSource>
<asp:GridView ID="CoursesGridView" runat="server" DataSourceID="CoursesObjectDataSource"
    AllowSorting="True" AutoGenerateColumns="False" SelectedRowStyle-BackColor="LightGray"
    DataKeyNames="CourseID">
    <EmptyDataTemplate>
        <p>No courses found.</p>
    </EmptyDataTemplate>
    <Columns>
        <asp:BoundField DataField="CourseID" HeaderText="ID" ReadOnly="True" SortExpression="CourseID" />
        <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" />
        <asp:TemplateField HeaderText="Department" SortExpression="DepartmentID">
            <ItemTemplate>
                <asp:Label ID="GridViewDepartmentLabel" runat="server" Text='<%# Eval("Department.Name") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

Eseguire la pagina e selezionare un insegnante. Viene visualizzato un elenco di corsi insegnato da tale insegnante.

Instructors_page_with_courses

Distribuzione dell'aggiornamento del codice nell'ambiente di test

La distribuzione nell'ambiente di test è una semplice questione di eseguire di nuovo la pubblicazione con un clic. Per semplificare questo processo, è possibile usare la barra degli strumenti Web Con un clic su Pubblica .

Scegliere Barre degli strumenti dal menu Visualizza e quindi selezionare Web Con un clic su Pubblica.

Selecting_One_Click_Publish_toolbar

In Esplora soluzioni selezionare il progetto ContosoUniversity.

la barra degli strumenti Pubblica con un clic sul Web , scegliere il profilo di pubblicazione test e quindi fare clic su Pubblica Web (l'icona con frecce che puntano a sinistra e a destra).

Web_One_Click_Publish_toolbar

Visual Studio distribuisce l'applicazione aggiornata e il browser si apre automaticamente alla home page. Eseguire la pagina Instructors e selezionare un insegnante per verificare che l'aggiornamento sia stato distribuito correttamente.

Instructors_page_with_courses_Test

In genere si eseguirebbero anche test di regressione, ovvero testare il resto del sito per assicurarsi che la nuova modifica non interrompa alcuna funzionalità esistente. Tuttavia, per questa esercitazione si ignorerà questo passaggio e si procederà alla distribuzione dell'aggiornamento nell'ambiente di produzione.

Prevenzione della ridistribuzione dello stato iniziale del database nell'ambiente di produzione

In un'applicazione reale, gli utenti interagiscono con il sito di produzione dopo la distribuzione iniziale e i database vengono popolati con dati attivi. Pertanto, non si vuole ridistribuire il database di appartenenza nello stato iniziale, che cancella tutti i dati in tempo reale. Poiché SQL Server Compact database sono file nella cartella App_Data, è necessario impedire questa modifica modificando le impostazioni di distribuzione in modo che i file nella cartella App_Data non vengano distribuiti.

Aprire la finestra Proprietà progetto per il progetto ContosoUniversity e selezionare la scheda Web Pacchetto/Pubblicazione. Assicurarsi che nella casella a discesa Configurazione sia selezionata l'opzione Active (Release) o Release (Versione), selezionare Escludi file dalla cartella App_Data.

Exclude_files_from_the_App_Data_folder

Nel caso in cui si decida di distribuire una build di debug in futuro, è consigliabile apportare la stessa modifica per la configurazione della compilazione di debug: modificare Configurazione in Debug e quindi selezionare Escludi file dalla cartella App_Data.

Salvare e chiudere la scheda Web Pacchetto/Pubblicazione .

Nota

Importante

Assicurarsi di non avere l'opzione Rimuovi file aggiuntivi nella destinazione selezionata nei profili di pubblicazione. Se si seleziona questa opzione, il processo di distribuzione eliminerà i database presenti in App_Data nel sito distribuito e eliminerà la cartella App_Data stessa.

Impedire l'accesso utente al sito di produzione durante l'aggiornamento

La modifica che si sta distribuendo è ora una semplice modifica a una singola pagina. Tuttavia, a volte si distribuiscono modifiche più grandi e in questo caso il sito può comportarsi in modo strano se un utente richiede una pagina prima del completamento della distribuzione. Per evitare questo problema, è possibile usare un file diapp_offline.htm . Quando si inserisce un file denominato app_offline.htm nella cartella radice dell'applicazione, IIS visualizza automaticamente tale file anziché eseguire l'applicazione. Per evitare l'accesso durante la distribuzione, inserire app_offline.htm nella cartella radice, eseguire il processo di distribuzione e quindi rimuovere app_offline.htm.

In Esplora soluzioni fare clic con il pulsante destro del mouse sulla soluzione (non uno dei progetti) e scegliere Nuova cartella soluzione.

Creating_a_solution_folder

Assegnare alla cartella il nome SolutionFiles.

Nella nuova cartella creare una pagina HTML denominata app_offline.htm. Sostituire il contenuto esistente con il markup seguente:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Contoso University - Under Construction</title>
</head>
<body>
  <h1>Contoso University</h1>
  <h2>Under Construction</h2>
  <p>The Contoso University site is temporarily unavailable while we upgrade it. Please try again later.</p>
</body>
</html>

È possibile copiare il file app_offline.htm nel sito usando una connessione FTP o l'utilità Gestione file nel pannello di controllo del provider di hosting. Per questa esercitazione si userà Gestione file.

Aprire il pannello di controllo e selezionare Gestione file come è stato fatto nell'esercitazione Distribuzione nell'ambiente di produzione . Selezionare contosouniversity.com e quindi wwwroot per accedere alla cartella radice dell'applicazione e quindi fare clic su Carica.

Upload_button_in_File_Manager

Nella finestra di dialogo Carica file selezionare il fileapp_offline.htm e quindi fare clic su Carica.

Upload_dialog_box_in_File_Manager

Passare all'URL del proprio sito. Si noterà che la pagina app_offline.htm è ora visualizzata invece della home page.

App_offline.htm_page_in_production

A questo momento è possibile eseguire la distribuzione nell'ambiente di produzione.

Distribuzione dell'aggiornamento del codice nell'ambiente di produzione

Nella barra degli strumenti Pubblica con un clic sul Web scegliere il profilo di pubblicazione produzione e quindi fare clic su Pubblica Web.

Visual Studio distribuisce l'applicazione aggiornata e apre il browser alla home page del sito. Viene visualizzato il file app_offline.htm . Prima di poter verificare la corretta distribuzione, è necessario rimuovere il file app_offline.htm .

Tornare all'applicazione File Manager nel pannello di controllo. Selezionare contosouniversity.com e wwwroot, selezionare app_offline.htme quindi fare clic su Elimina.

Deleting_app_offline.htm

Nel browser aprire la pagina Instructors nel sito pubblico e selezionare un insegnante per verificare che l'aggiornamento sia stato distribuito correttamente.

Instructors_page_with_courses_Prod

È stato ora distribuito un aggiornamento dell'applicazione che non ha comportato una modifica del database. L'esercitazione successiva illustra come distribuire una modifica del database.