Condividi tramite


Distribuzione di un'applicazione Web ASP.NET con SQL Server Compact con Visual Studio o Visual Web Developer: Distribuzione di un aggiornamento di sola codice - 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 di SQL Server diverse da SQL Server Compact e illustra come eseguire la distribuzione in app Azure Service 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 non funziona durante l'esercitazione, assicurarsi di controllare la pagina di risoluzione dei problemi.

Apportare una modifica al codice

Come semplice esempio di un aggiornamento dell'applicazione, si aggiungerà alla pagina Instructors un elenco di corsi insegnati 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 insegnati 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 insegnati 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 solo clic. Per rendere più rapido questo processo, è possibile usare la barra degli strumenti Pubblica con un clic Web.

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 web con un clic , 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 nella 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 abbia interrotto 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 in tempo reale. Pertanto, non si vuole ridistribuire il database di appartenenza nello stato iniziale, che eliminerebbe tutti i dati in tempo reale. Poiché i database di SQL Server Compact sono file nella cartella App_Data , è necessario evitare 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 Pacchetto/Pubblica web. 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

Se si decide di distribuire una build di debug in futuro, è consigliabile apportare la stessa modifica per la configurazione della build 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. Ma a volte si distribuiscono modifiche più grandi e in questo caso il sito può comportarsi stranamente se un utente richiede una pagina prima del completamento della distribuzione. Per evitare questo problema, è possibile usare un file app_offline.htm . Quando si inserisce un file denominato app_offline.htm nella cartella radice dell'applicazione, IIS visualizza automaticamente il file anziché eseguire l'applicazione. Per impedire 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

Denominare la cartella 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 file app_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 viene ora visualizzata invece della home page.

App_offline.htm_page_in_production

È ora 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 nella home page del sito. Viene visualizzato il file app_offline.htm . Prima di poter eseguire il test per verificare la corretta distribuzione, è necessario rimuovere il file app_offline.htm .

Tornare all'applicazione Gestione file nel pannello di controllo. Selezionare contosouniversity.com e wwwroot, selezionare app_offline.htm e 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.