Implementación de una aplicación web de ASP.NET con SQL Server Compact mediante Visual Studio o Visual Web Developer: implementación en el entorno de IIS como un entorno de pruebas: 5 de 12

por Tom Dykstra

Descargar el 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

En este tutorial se muestra cómo implementar una aplicación web de ASP.NET en IIS en el equipo local.

Cuando se desarrolla una aplicación, se prueba generalmente ejecutándose en Visual Studio. De forma predeterminada, esto significa que usa el Servidor de desarrollo de Visual Studio (también conocido como Cassini). El Servidor de desarrollo de Visual Studio facilita la prueba durante el desarrollo en Visual Studio, pero no funciona exactamente como IIS. Como resultado, es posible que una aplicación se ejecute correctamente al probarla en Visual Studio, pero se produce un error cuando se implementa en IIS en un entorno de hospedaje.

Puede probar la aplicación de forma más confiable de estas maneras:

  1. Use IIS Express o IIS completo en lugar del Servidor de desarrollo de Visual Studio cuando pruebe en Visual Studio durante el desarrollo. Este método suele emular con más precisión cómo se ejecutará el sitio en IIS. Sin embargo, este método no prueba el proceso de implementación ni valida que el resultado del proceso de implementación se ejecutará correctamente.
  2. Implemente la aplicación en IIS en el equipo de desarrollo con el mismo proceso que usará más adelante para implementarla en el entorno de producción. Este método valida el proceso de implementación además de validar que la aplicación se ejecutará correctamente en IIS.
  3. Implemente la aplicación en un entorno de prueba lo más cercano posible al entorno de producción. Dado que el entorno de producción de estos tutoriales es un proveedor de hospedaje de terceros, el entorno de prueba ideal sería una segunda cuenta con el proveedor de hospedaje. Usaría esta segunda cuenta solo para las pruebas, pero se configuraría de la misma manera que la cuenta de producción.

Este tutorial muestra los pasos para la opción 2. Se proporcionan instrucciones para la opción 3 al final del tutorial Implementación en el entorno de producción y, al final de este tutorial, hay vínculos a recursos para la opción 1.

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.

Configuración de la aplicación para que se ejecute en confianza media

Antes de instalar IIS e implementarlo, cambiará una configuración de archivo Web.config para que el sitio se ejecute más como lo hará en un entorno de hospedaje compartido típico.

Los proveedores de hospedaje normalmente ejecutan su sitio web en confianza media, lo que significa que hay algunas cosas que no se pueden hacer. Por ejemplo, el código de aplicación no puede acceder al Registro de Windows y no puede leer ni escribir archivos que están fuera de la jerarquía de carpetas de la aplicación. De forma predeterminada, la aplicación se ejecuta en confianza alta en el equipo local, lo que significa que es posible que la aplicación pueda hacer cosas que generarían errores al implementarla en producción. Por lo tanto, para que el entorno de prueba refleje con mayor precisión el entorno de producción, configurará la aplicación para que se ejecute en confianza media.

En el archivo Web.config de la aplicación, agregue un elemento trust en el elemento system.web, como se muestra en este ejemplo.

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

La aplicación ahora se ejecutará en confianza media en IIS incluso en el equipo local. Esta configuración le permite detectar lo antes posible los intentos realizados por el código de aplicación para hacer algo que produciría un error.

Nota:

Si usa Migraciones de Entity Framework Code First, asegúrese de que tiene instalada la versión 5.0 o posterior. En Entity Framework (versión 4.3), las migraciones requieren plena confianza para actualizar el esquema de la base de datos.

Instalación de IIS e Web Deploy

Para realizar la implementación en IIS en el equipo de desarrollo, debe tener instalados IIS y Web Deploy. No se incluyen en la configuración predeterminada de Windows 7. Si ya ha instalado IIS e Web Deploy, vaya a la sección siguiente.

El uso del Instalador de plataforma web es la manera preferida de instalar IIS e Web Deploy, ya que el Instalador de plataforma web instala una configuración recomendada para IIS y instala automáticamente los requisitos previos para IIS e Web Deploy si es necesario.

Para ejecutar el Instalador de plataforma web para instalar IIS e Web Deploy, use el vínculo siguiente. Si ya ha instalado IIS, Web Deploy o cualquiera de sus componentes obligatorios, el Instalador de plataforma web instala solo lo que falta.

Establecer el grupo de aplicaciones predeterminado en .NET 4

Después de instalar IIS, ejecute el Administrador de IIS para asegurarse de que la versión 4 de .NET Framework está asignada al grupo de aplicaciones predeterminado.

En el menú Inicio de Windows, seleccione Ejecutar, escriba "inetmgr" y haga clic en Aceptar. (Si el comando Ejecutar no está en el menú Inicio, puede presionar la tecla de Windows y R para abrirlo. O haga clic con el botón derecho en la barra de tareas, seleccione Propiedades, seleccione la pestaña Menú Inicio, después Personalizar y luego seleccione el Comando Ejecutar).

En el panel Conexiones, expanda el nodo del servidor y seleccione Grupo de aplicaciones. En el panel Grupos de aplicaciones, si DefaultAppPool está asignado a la versión 4 de .NET Framework como en la ilustración siguiente, vaya a la sección siguiente.

Inetmgr_showing_4.0_app_pools

Si solo ve dos grupos de aplicaciones y ambos se establecen en .NET Framework 2.0, ha de instalar ASP.NET 4 en IIS:

  • Abra una ventana del símbolo del sistema; para ello, haga clic con el botón derecho en Símbolo del sistema en el menú Inicio de Windows y seleccione Ejecutar como Administrador. A continuación, ejecute aspnet_regiis.exe para instalar ASP.NET 4 en IIS mediante los siguientes comandos. (En sistemas de 64 bits, reemplace "Framework" por "Framework64").

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

    aspnet_regiis_installing_ASP.NET_4

    Este comando crea grupos de aplicaciones para .NET Framework 4, pero el grupo de aplicaciones predeterminado seguirá establecido en 2.0. Va a implementar una aplicación destinada a .NET 4 en ese grupo de aplicaciones, por lo que debe cambiar el grupo de aplicaciones a .NET 4.

Si cerró el Administrador de IIS, ejecútelo de nuevo, expanda el nodo del servidor y haga clic en Grupos de aplicaciones para volver a mostrar el panel Grupos de aplicaciones.

En el panel Grupos de aplicaciones, haga clic en DefaultAppPool y, a continuación, en el panel Acciones, haga clic en Configuración básica.

Inetmgr_selecting_Basic_Settings_for_app_pool

En el cuadro de diálogo Editar grupo de aplicaciones, cambie la versión de .NET Framework a .NET Framework v4.0.30319 y haga clic en Aceptar.

Selecting_.NET_4_for_DefaultAppPool

Ya está listo para publicar en IIS.

Publicar en IIS

Hay varias maneras de realizar la implementación mediante Visual Studio 2010 y Web Deploy:

  • Usar Publicación con un solo clic en Visual Studio.
  • Crear un paquete de implementación e instalarlo mediante el Administrador de IIS. El paquete de implementación consta de un archivo .zip que contiene todos los archivos y metadatos necesarios para instalar un sitio en IIS.
  • Crear un paquete de implementación e instalarlo mediante la línea de comandos.

El proceso que ha pasado en los tutoriales anteriores para configurar Visual Studio a fin de automatizar las tareas de implementación se aplica a estos tres métodos. En estos tutoriales, usará el primero de estos métodos. Para obtener información sobre el uso de paquetes de implementación, consulte Mapa de contenido de implementación ASP.NET.

Antes de la publicación, asegúrese de que ejecuta Visual Studio en modo de administrador. (En el menú Inicio de Windows 7, haga clic con el botón derecho en el icono de la versión de Visual Studio que esté usando y seleccione Ejecutar como administrador). El modo de administrador solo es necesario para publicar solo cuando se publica en IIS en el equipo local.

En el Explorador de soluciones, haga clic con el botón derecho en el proyecto ContosoUniversity (no en el proyecto ContosoUniversity.DAL) y seleccione Publicar.

Aparece el asistente de Publicación web .

Publish_Web_wizard_Profile_tab

En la lista desplegable, seleccione <Nuevo...>.

En el cuadro de diálogo Nuevo perfil, escriba "Probar" y, a continuación, haga clic en Aceptar.

New_Profile_dialog_box

Este nombre es el mismo que el nodo central del archivo de transformación Web.Test.config que creó anteriormente. Esta correspondencia es lo que hace que las transformaciones Web.Test.config se apliquen al publicar mediante este perfil.

El asistente avanza automáticamente a la pestaña Conexión.

En el cuadro URL del servicio, escriba localhost.

En el cuadro Sitio o aplicación, escriba Sitio web predeterminado/ContosoUniversity.

En el cuadro Dirección URL de destino, escriba http://localhost/ContosoUniversity.

El valor Dirección URL de destino no es obligatorio. Cuando Visual Studio termina de implementar la aplicación, se abre automáticamente el explorador predeterminado en esta dirección URL. Si no quiere que el explorador se abra automáticamente después de la implementación, deje este cuadro en blanco.

Publish_Web_wizard_Connection_tab_Test

Seleccione Validar conexión para comprobar que la configuración es correcta y se puede conectar a IIS en el equipo local.

Una marca de verificación verde indica que la conexión se ha realizado correctamente.

Publish_Web_wizard_Connection_tab_validated

Haga clic en Siguiente para avanzar a la pestaña Configuración.

El cuadro desplegable Configuración especifica la configuración de compilación que se va a implementar. El valor predeterminado es Release, que es el que quiere.

Deje desactivada la casilla Quitar archivos adicionales en el destino. Puesto que esta es la primera implementación, todavía no habrá ningún archivo en la carpeta de destino.

En la sección Bases de datos, escriba el siguiente valor en el cuadro cadena de conexión de SchoolContext:

Data Source=|DataDirectory|School-Prod.sdf

El proceso de implementación colocará esta cadena de conexión en el archivo Web.config implementado porque se ha seleccionado Usar este cadena de conexión en tiempo de ejecución.

En SchoolContext, seleccione Aplicar migraciones de Code First. Esta opción hace que el proceso de implementación configure el archivo Web.config implementado para especificar el inicializador MigrateDatabaseToLatestVersion. Este inicializador actualiza automáticamente la base de datos a la versión más reciente cuando la aplicación accede a la base de datos por primera vez después de la implementación.

En el cuadro cadena de conexión de DefaultConnection, escriba el siguiente valor:

Data Source=|DataDirectory|aspnet-Prod.sdf

Deje Actualizar base de datos desactivada. La base de datos de pertenencia se implementará copiando el archivo .sdf en App_Data y no quiere que el proceso de implementación haga nada más con esta base de datos.

Publish_Web_wizard_Settings_tab_Test

Haga clic en Siguiente para avanzar a la pestaña Vista previa.

En la pestaña Vista previa, haga clic en Iniciar vista previa para ver una lista de los archivos que se copiarán.

Publish_Web_wizard_Preview_tab_Test

Publish_Web_wizard_Preview_tab_Test_with_file_list

Haga clic en Publicar.

Si Visual Studio no está en modo de administrador, es posible que reciba un mensaje de error que indica que ha habido un error de permisos. En ese caso, cierre Visual Studio, ábralo en modo de administrador e intente de nuevo la publicación.

Si Visual Studio está en modo de administrador, en la ventana Salida se notifican la compilación y publicación correctas.

Output_window_publish_Test

El explorador se abre automáticamente en la página principal de Contoso University que se ejecuta en IIS en el equipo local.

Screenshot of the Internet Explorer window, which is showing the Contoso University environment indicator is Test instead of Dev.

Prueba en el entorno de prueba

Observe que el indicador de entorno muestra "(Test)" en lugar de "(Dev)", lo que indica que la transformación de Web.config para el indicador de entorno se ha realizado correctamente.

Screenshot of the Internet Explorer window, which shows the Contoso University environment indicator is Test instead of Dev.

Ejecute la página Students para comprobar que la base de datos implementada no tiene alumnos. Al seleccionar esta página, puede tardar unos minutos en cargarse porque Code First crea la base de datos y, después, ejecuta el método Seed. (No lo ha hecho cuando estaba en la página principal porque la aplicación aún no había intentado acceder a la base de datos).

Students_page_Test

Ejecute la página Instructors para comprobar que Code First ha inicializado la base de datos con datos de instructor:

Instructors_page_Test

Seleccione Agregar alumnos en el menú Alumnos, agregue un alumno y, después, vea el nuevo alumno en la página Alumnos para comprobar que puede escribir correctamente en la base de datos:

Add_Students_page_Test

Students_page_with_new_student_Test

En el menú Cursos, seleccione Actualizar créditos. En la página Actualizar créditos se necesitan permisos de administrador, por lo que se muestra la página Iniciar sesión. Escriba las credenciales de la cuenta de administrador que ha creado antes ("admin" y "Pas$w0rd"). Se muestra la página Actualizar créditos, que comprueba que la cuenta de administrador que ha creado en el tutorial anterior se ha implementado correctamente en el entorno de prueba.

Log_In_page_Test

Update_Credits_page_Test

Compruebe que existe una carpeta Elmah con solo el archivo de marcador de posición.

Elmah_folder_Test

Revisión de los cambios automáticos de Web.config para migraciones de Code First

Abra el archivo Web.config en la aplicación implementada en C:\inetpub\wwwroot\ContosoUniversity; puede ver dónde ha configurado el proceso de implementación Migraciones de Code First para actualizar automáticamente la base de datos a la versión más reciente.

Screenshot that highlights where the deployment process configured Code First Migrations to automatically update the database to the latest version.

El proceso de implementación también ha creado una cadena de conexión que Migraciones de Code First usará exclusivamente para actualizar el esquema de la base de datos:

DatabasePublish_connection_string

Esta cadena de conexión adicional le permite especificar una cuenta de usuario para las actualizaciones del esquema de base de datos y otra cuenta de usuario para el acceso a datos de la aplicación. Por ejemplo, puede asignar el rol db_owner a Migraciones de Code First y db_datareader con roles db_datawriter a la aplicación. Se trata de un patrón común de defensa en profundidad que impide que código potencialmente malintencionado de la aplicación cambie el esquema de la base de datos. (Por ejemplo, esto podría ocurrir en un ataque por inyección de código SQL exitosos). Estos tutoriales no usan este patrón. No se aplica a SQL Server Compact y no se aplica al migrar a SQL Server en un tutorial posterior de esta serie. El sitio cytanium ofrece solo una cuenta de usuario para acceder a la base de datos de SQL Server que se crea en Cytanium. Si puede implementar este patrón en su escenario, puede hacerlo realizando los pasos siguientes:

  1. En la pestaña Configuración del asistente para publicar web, escriba el cadena de conexión que especifica un usuario con permisos completos de actualización de esquema de base de datos y desactive la casilla Usar este cadena de conexión en tiempo de ejecución. En el archivo Web.config implementado, se convierte en la cadena de conexión DatabasePublish.
  2. Cree una transformación de archivo Web.config para la cadena de conexión que quiera que la aplicación use en tiempo de ejecución.

Ahora ha implementado la aplicación en IIS en el equipo de desarrollo y la ha probado allí. Esto verifica que el proceso de implementación ha copiado el contenido de la aplicación en la ubicación correcta (excepto los archivos que no quería implementar) y que Web Deploy ha configurado IIS correctamente durante la implementación. En el siguiente tutorial, ejecutará una prueba más que busca una tarea de implementación que aún no se ha realizado: establecer permisos de carpeta en la carpeta ELMAH.

Más información

Para obtener información sobre cómo ejecutar IIS o IIS Express en Visual Studio, vea los siguientes recursos: