Implementación de una aplicación web de ASP.NET con SQL Server Compact mediante Visual Studio o Visual Web Developer: implementación de una actualización de solo código: 8 de 12

de Tom Dykstra

Descarga del proyecto de inicio

En esta serie de tutoriales se muestra cómo implementar (publicar) un proyecto de aplicación web de ASP.NET que incluye una base de datos de SQL Server Compact mediante Visual Studio 2012 RC o Visual Studio Express 2012 RC para la web. También puede usar Visual Studio 2010 si instala la actualización de publicación web. Para obtener una introducción a la serie, consulte el primer tutorial de la serie.

Para ver un tutorial que muestra las características de implementación introducidas después de la versión RC de Visual Studio 2012, muestra cómo implementar ediciones de SQL Server distintas de SQL Server Compact y muestra cómo implementar en Azure App Service Web Apps, consulte Implementación web de ASP.NET con Visual Studio.

Información general

Después de la implementación inicial, el trabajo de mantenimiento y desarrollo de su sitio web continúa y, en poco tiempo, querrá implementar una actualización. Este tutorial le lleva a través del proceso de implementación de una actualización en el código de la aplicación. Esta actualización no implica un cambio en la base de datos; verá la diferencia de la implementación de un cambio de base de datos en el siguiente tutorial.

Aviso: Si recibe un mensaje de error o algo no funciona mientras recorre el tutorial, asegúrese de comprobar la página de solución de problemas.

Realizar un cambio de código

Como ejemplo sencillo de una actualización de la aplicación, agregará a la página Instructores una lista de cursos impartidos por el instructor seleccionado.

Si ejecuta la página Instructores, observará que hay vínculos de Seleccionar en la cuadrícula, pero solo hacen que el fondo de la fila se ponga de color gris.

Instructors_page

Ahora agregará código que se ejecutará cuando se haga clic en el vínculo Seleccionar y se mostrará una lista de cursos impartidos por el instructor seleccionado.

En Instructors.aspx, agregue el siguiente marcado inmediatamente después del control 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>

Actualice la página y seleccione un instructor. Verá una lista de los cursos que imparte ese instructor.

Instructors_page_with_courses

Implementación de la actualización de código en el entorno de prueba

La implementación en el entorno de prueba consiste simplemente en volver a ejecutar la publicación con un solo clic. Para que este proceso sea más rápido, puede usar la barra de herramientas Publicar con un solo clic en la web.

En el menú Ver, elija Barras de herramientas y, a continuación, seleccione Publicar web con un solo clic.

Selecting_One_Click_Publish_toolbar

En el Explorador de soluciones, seleccione el proyecto ContosoUniversity.

La barra de herramientas Publicar con un solo clic en la web, elija el perfil de publicación Prueba y, a continuación, haga clic en Publicar web (el icono con flechas que apuntan a la izquierda y a la derecha).

Web_One_Click_Publish_toolbar

Visual Studio implementa la aplicación actualizada y el explorador se abre automáticamente en la página principal. Ejecute la página Instructors y seleccione un instructor para comprobar que la actualización se ha implementado correctamente.

Instructors_page_with_courses_Test

Normalmente, también haría pruebas de regresión (es decir, probar el resto del sitio para asegurarse de que el nuevo cambio no interrumpe ninguna funcionalidad existente). Pero para este tutorial omitirá ese paso y continuará con la implementación de la actualización en producción.

Evitar la reimplementación del estado inicial de la base de datos en producción

En una aplicación real, los usuarios interactúan con el sitio de producción después de la implementación inicial y las bases de datos se llenan con datos activos. Por lo tanto, no desea volver a implementar la base de datos de pertenencia en su estado inicial, pues se borrarían todos los datos activos. Dado que las bases de datos de SQL Server Compact son archivos en la carpeta App_Data, debe evitarlo cambiando la configuración de implementación para que los archivos de la carpeta App_Data no se implementen.

Abra la ventana Propiedades del proyecto para el proyecto ContosoUniversity y seleccione la pestaña Empaquetar/Publicar web. Asegúrese de que el cuadro desplegable Configuración tenga seleccionadoActivada (Versión) o Versión y seleccione Excluir archivos de la carpeta App_Data.

Exclude_files_from_the_App_Data_folder

En caso de que decida implementar una compilación de depuración en el futuro, es una buena idea realizar el mismo cambio para la configuración de compilación de depuración: cambie Configuración a Depuración y, a continuación, seleccione Excluir archivos de la carpeta App_Data.

Guarde y cierre la pestaña Empaquetar/Publicar web.

Nota:

Importante

Asegúrese de que no tiene seleccionada la opción Quitar archivos adicionales en el destino en los perfiles de publicación. Si selecciona esa opción, el proceso de implementación eliminará las bases de datos que tiene en App_Data en el sitio implementado y eliminará la carpeta App_Data.

Impedir el acceso de usuario al sitio de producción durante la actualización

El cambio que va a implementar ahora es un cambio sencillo en una sola página. Pero a veces se implementan cambios más grandes y, en ese caso, el sitio puede comportarse extrañamente si un usuario solicita una página antes de que finalice la implementación. Para evitar esto, puede usar un archivo app_offline.htm. Al colocar un archivo denominado app_offline.htm en la carpeta raíz de la aplicación, IIS muestra automáticamente ese archivo en lugar de ejecutar la aplicación. Por lo tanto, para evitar el acceso durante la implementación, coloque app_offline.htm en la carpeta raíz, ejecute el proceso de implementación y, a continuación, quite app_offline.htm.

En el Explorador de soluciones, haga clic con el botón derecho en la solución (no uno de los proyectos) y seleccione Nueva carpeta de soluciones.

Creating_a_solution_folder

Asigne a la carpeta el nombre SolutionFiles.

En la nueva carpeta, cree una página HTML denominada app_offline.htm. Reemplace el contenido existente por el siguiente marcado:

<!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>

Puede copiar el archivo app_offline.htm en el sitio mediante una conexión FTP o la utilidad Administrador de archivos en el panel de control del proveedor de hospedaje. En este tutorial, usará el Administrador de archivos.

Abra el panel de control y seleccione Administrador de archivos como hizo en el tutorial Implementación en el entorno de producción. Seleccione contosouniversity.com y, a continuación, wwwroot para ir a la carpeta raíz de la aplicación y, a continuación, haga clic en Cargar.

Upload_button_in_File_Manager

En el cuadro de diálogo Cargar archivo, seleccione el archivo app_offline.htm y, a continuación, haga clic en Cargar.

Upload_dialog_box_in_File_Manager

Vaya a la dirección URL del sitio. Verá que la página app_offline.htm ahora se muestra en lugar de la página principal.

App_offline.htm_page_in_production

Ya está listo para implementar en producción.

Implementación de la actualización de código en el entorno de producción

En la barra de herramientas Publicar web con un solo clic, elija el perfil de publicación de producción y, a continuación, haga clic en Publicar web.

Visual Studio implementa la aplicación actualizada y abre el explorador en la página principal del sitio. Se muestra el archivo app_offline.htm. Para poder probar para comprobar la implementación correcta, debe quitar el archivo app_offline.htm.

Vuelva a la aplicación Administrador de archivos en el panel de control. Seleccione contosouniversity.com y wwwroot, seleccione app_offline.htm y haga clic enEliminar.

Deleting_app_offline.htm

En el explorador, abra la página Instructors en el sitio público y seleccione un instructor para comprobar que la actualización se implementó correctamente.

Instructors_page_with_courses_Prod

Ahora ha implementado una actualización de aplicación que no implicaba un cambio en la base de datos. En el siguiente tutorial se muestra cómo implementar un cambio de base de datos.