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 producción: 7 de 12
Por 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
En este tutorial, configurará una cuenta con un proveedor de hospedaje e implementará la aplicación web de ASP.NET en el entorno de producción mediante la característica de publicación con un solo clic de Visual Studio.
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.
Selección de un proveedor de hospedaje
Para la aplicación Contoso University y esta serie de tutoriales, necesita un proveedor que admita ASP.NET 4 y Web Deploy. Se eligió una empresa de hospedaje específica para que los tutoriales pudieran ilustrar la experiencia completa de la implementación en un sitio web activo. Cada empresa de hospedaje proporciona características diferentes y la experiencia de implementación en sus servidores varía un poco. Sin embargo, el proceso descrito en este tutorial es típico para el proceso general. El proveedor de hospedaje usado para este tutorial, Cytanium.com, es uno de los muchos que están disponibles y su uso en este tutorial no constituye un respaldo ni una recomendación.
Cuando esté listo para seleccionar su propio proveedor de hospedaje, puede comparar características y precios en la galería de proveedores en el sitio de Microsoft.com/web.
Creación de una cuenta
Cree una cuenta en el proveedor seleccionado. Si la compatibilidad con una base de datos completa de SQL Server es un adicional, no es necesario seleccionarla para este tutorial, pero la necesitará para el tutorial Migración a SQL Server más adelante en esta serie.
En estos tutoriales, no es necesario registrar un nuevo nombre de dominio. Puede probar para comprobar la implementación correcta mediante la dirección URL temporal asignada al sitio por el proveedor.
Una vez creada la cuenta, normalmente recibirá un correo electrónico de bienvenida que contiene toda la información que necesita para implementar y administrar el sitio. La información que envía el proveedor de hospedaje será similar a la que se muestra aquí. El correo electrónico de bienvenida de Cytanium que se envía a los nuevos propietarios de la cuenta incluye la siguiente información:
Dirección URL del sitio del panel de control del proveedor, donde puede administrar la configuración del sitio. El identificador y la contraseña especificados se incluyen en esta parte del correo electrónico de bienvenida para facilitar la referencia. (Ambos se han cambiado a un valor de demostración para esta ilustración).
La versión predeterminada de .NET Framework e información sobre cómo cambiarla. Muchos sitios de hospedaje tienen como valor predeterminado 2.0, que funciona con aplicaciones de ASP.NET destinadas a .NET Framework 2.0, 3.0 o 3.5. Sin embargo, Contoso University es una aplicación de .NET Framework 4, por lo que debe cambiar este valor. (Para una aplicación de ASP.NET 4.5, usaría el valor de .NET 4.0).
Dirección URL temporal que puede usar para acceder al sitio web. Cuando se creó esta cuenta, se especificó "contosouniversity.com" como nombre de dominio existente. Por lo tanto, la dirección URL temporal es
http://contosouniversity.com.vserver01.cytanium.com
.Información sobre cómo configurar bases de datos y las cadenas de conexión que necesita para acceder a ellas:
Información sobre las herramientas y la configuración para implementar el sitio. (El correo electrónico de Cytanium también menciona WebMatrix, que se omite aquí).
Configuración de la versión de .NET Framework
El correo electrónico de bienvenida de Cytanium incluye un vínculo a instrucciones sobre cómo cambiar la versión de .NET Framework. Estas instrucciones explican que esto se puede hacer a través del panel de control de Cytanium. Otros proveedores tienen sitios de panel de control que tienen un aspecto diferente o pueden indicarle que lo haga de otra manera.
Vaya a la dirección URL del panel de control. Después de iniciar sesión con el nombre de usuario y la contraseña, verá el panel de control.
En el cuadro Espacios de hospedaje, mantenga presionado el puntero sobre el icono web y seleccione Sitios web en el menú.
En el cuadro Sitios web, haga clic en contosouniversity.com (el nombre del sitio que usó al crear la cuenta).
En el cuadro Propiedades del sitio web, seleccione la pestaña Extensiones.
Cambie ASP.NET de canalización integrada 2.0 a 4.0 (canalización integrada) y, a continuación, haga clic en Actualizar.
Publicación en el proveedor de hospedaje
El correo electrónico de bienvenida del proveedor de hospedaje incluye toda la configuración que necesita para publicar el proyecto y puede escribir esa información manualmente en un perfil de publicación. Pero usará un método más sencillo y menos propenso a errores para configurar la implementación en el proveedor: descargará un archivo .publishsettings y lo importará en un perfil de publicación.
En el explorador, vaya al panel de control de Cytanium y seleccione Web y, a continuación, seleccione Sitios web.
Seleccione el sitio web de contosouniversity.com.
Seleccione la pestaña Publicación web.
Cree credenciales para usarlas para la publicación web escribiendo un nombre de usuario y una contraseña. Puede escribir las mismas credenciales que usa para iniciar sesión en el panel de control. A continuación, haga clic en Enable (Habilitar).
Haga clic en Descargar perfil de publicación para este sitio web.
Cuando se le pida que abra o guarde el archivo, guárdelo.
En el Explorador de soluciones de Visual Studio, haga clic con el botón derecho en el proyecto ContosoUniversity y seleccione Publicar. El cuadro de diálogo Publicar web se abre en la pestaña Vista previa con el perfil de Prueba seleccionado porque es el último perfil que usó.
Seleccione la pestaña Perfil y haga clic en Importar.
En el cuadro de diálogo Importar configuración de publicación, seleccione el archivo .publishsettings que descargó y haga clic en Abrir. El asistente avanza a la pestaña Conexión con todos los campos rellenados.
El archivo .publishsettings coloca la dirección URL permanente planeada para el sitio en el cuadro Dirección URL de destino, pero si aún no ha comprado ese dominio, reemplace el valor por la dirección URL temporal. En este ejemplo, la dirección URL es http://contosouniversity.com.vserver01.cytanium.com
. El único propósito de este cuadro es especificar la dirección URL que abrirá el explorador automáticamente después de implementar correctamente. Si lo deja en blanco, la única consecuencia es que el explorador no se iniciará automáticamente después de la implementación.
Haga clic en Validar conexión para comprobar que la configuración sea correcta y que pueda conectarse al servidor. Como ha visto anteriormente, una marca de verificación verde comprueba que la conexión se ha realizado correctamente.
Al hacer clic en Validar conexión, es posible que vea un cuadro de diálogo Error de certificado. En ese caso, compruebe que el nombre del servidor sea el esperado. Si es así, seleccione Guardar este certificado para futuras sesiones de Visual Studio y haga clic en Aceptar. (Este error significa que el proveedor de hospedaje ha elegido evitar el gasto de comprar un certificado SSL para la dirección URL en la que se va a realizar la implementación. Si prefiere establecer una conexión segura mediante un certificado válido, póngase en contacto con el proveedor de hospedaje).
Haga clic en Next.
En la sección Bases de datos de la pestaña Configuración, escriba los mismos valores que especificó para el perfil de publicación de prueba. Encontrará las cadenas de conexión que necesita en las listas desplegables.
- En el cuadro de cadena de conexión de SchoolContext, seleccione
Data Source=|DataDirectory|School-Prod.sdf
- En SchoolContext, seleccione Aplicar migraciones de Code First.
- En el cuadro de cadena de conexión de DefaultConnection, seleccione
Data Source=|DataDirectory|aspnet-Prod.sdf
- En DefaultConnection, deje la opción Actualizar base de datos desactivada.
Haga clic en Next.
En la pestaña Vista previa, haga clic en Iniciar vista previa para ver una lista de los archivos que se copiarán. Verá la misma lista que vio anteriormente al implementar en IIS en el equipo local.
Antes de publicar, cambie el nombre del perfil para que se aplique el archivo de transformación Web.Production.config. Seleccione la pestaña Perfil y haga clic en Administrar perfiles.
En el cuadro de diálogo Editar perfiles de publicación web, seleccione el perfil de producción, haga clic en Cambiar nombre y cambie el nombre del perfil a Producción. A continuación, haga clic en Cerrar.
Haga clic en Publicar.
La aplicación se publica en el proveedor de hospedaje. El resultado se muestra en la ventana Salida.
El explorador abre automáticamente la dirección URL especificada en el cuadro Dirección URL de destino de la pestaña Conexión del asistente de Publicación web. Verá la misma página principal que al ejecutar el sitio en Visual Studio, excepto ahora no hay ningún indicador de entorno "(Test)" o "(Dev)" en la barra de título. Esto indica que la transformación Web.config del indicador de entorno funcionó correctamente.
Nota:
Si sigue viendo "(Test)" en el encabezado, elimine la carpeta obj del proyecto ContosoUniversity y vuelva a implementar. En versiones preliminares del software, es posible que el archivo de transformación aplicado anteriormente (Web.Test.config) se aplique de nuevo aunque esté usando el perfil de producción.
Antes de ejecutar una página que provoque el acceso a la base de datos, asegúrese de que Elmah podrá registrar los errores que se produzcan.
Establecer permisos de carpeta para Elmah
Como recuerda del tutorial anterior de esta serie, debe asegurarse de que la aplicación tiene permisos de escritura para la carpeta de la aplicación en la que Elmah almacena los archivos de registro de errores. Al implementar en IIS localmente en el equipo, establezca esos permisos manualmente. En esta sección, verá cómo establecer permisos en Cytanium. (Es posible que algunos proveedores de hospedaje no le permitan hacer esto; pueden ofrecer una o varias carpetas predefinidas con permisos de escritura. En ese caso, tendría que modificar la aplicación para usar las carpetas especificadas).
Puede establecer permisos de carpeta en el panel de control de Cytanium. Vaya a la dirección URL del panel de control y seleccione Administrador de archivos.
En el cuadro Administrador de archivos, seleccione contosouniversity.com y, a continuación, wwwroot para ver la carpeta raíz de la aplicación. Haga clic en el icono de candado situado junto a Elmah.
En la ventana Archivo/Permisos de carpeta, active las casillas Lectura y Escritura para contosouniversity.com y haga clic en Establecer permisos.
Asegúrese de que Elmah tenga acceso de escritura a la carpeta Elmah causando un error y, a continuación, mostrando el informe de errores de Elmah. Solicite una dirección URL no válida como Studentsxxx.aspx. Como antes, verá la página GenericErrorPage.aspx. Haga clic en el vínculo Cerrar sesión y, a continuación, ejecute Elmah.axd. Primero obtendrá la página Iniciar sesión, que valida que la transformación Web.config agregó correctamente la autorización de Elmah. Después de iniciar sesión, verá el informe que muestra el error que acaba de causar.
Pruebas en el entorno de producción
Ejecute la página Estudiantes. La aplicación intenta acceder a la base de datos School por primera vez, lo que desencadena migraciones de Code First para crear la base de datos. Cuando la página se muestra después de un momento de demora, muestra que no hay alumnos.
Ejecute la página Profesores para comprobar que los datos de inicialización insertaron correctamente los datos del profesor en la base de datos.
Como hizo en el entorno de prueba, quiere comprobar que las actualizaciones de la base de datos funcionan en el entorno de producción, pero normalmente no querrá escribir datos de prueba en la base de datos de producción. En este tutorial, usará el mismo método que usó en la prueba. Pero en una aplicación real es posible que desee encontrar un método que valide que las actualizaciones de la base de datos se realicen correctamente sin introducir datos de prueba en la base de datos de producción. En algunas aplicaciones, puede ser práctico agregar algo y, a continuación, eliminarlo.
Agregue un alumno y, a continuación, vea los datos especificados en la página Estudiantes para comprobar que puede actualizar los datos en la base de datos.
Para validar que las reglas de autorización funcionan correctamente, seleccione Actualizar créditos en el menú Cursos. Se muestra la página Iniciar sesión. Escriba las credenciales de la cuenta de administrador, haga clic en Iniciar sesión y se mostrará la página Actualizar créditos.
Si el inicio de sesión se realiza correctamente, se muestra la página Actualizar créditos. Esto indica que la base de datos de pertenencia de ASP.NET (con la cuenta de administrador única) se implementó correctamente.
Ya ha implementado y probado correctamente el sitio y está disponible públicamente en Internet.
Creación de un entorno de prueba más confiable
Como se explica en el tutorial Implementación en el entorno de prueba, el entorno de prueba más confiable sería una segunda cuenta en el proveedor de hospedaje que sea igual que la cuenta de producción. Esto sería más caro que usar IIS local como entorno de prueba, ya que tendría que registrarse en una segunda cuenta de hospedaje. Pero si evita errores o interrupciones del sitio de producción, puede decidir que vale la pena el costo.
La mayoría del proceso para crear e implementar en una cuenta de prueba es similar a lo que ya ha hecho para implementar en producción:
- Cree un archivo de transformación Web.config.
- Cree una cuenta en el proveedor de hospedaje.
- Cree un nuevo perfil de publicación e implemente en la cuenta de prueba.
Impedir el acceso público al sitio de prueba
Una consideración importante para la cuenta de prueba es que estará activa en Internet, pero no quiere que el público la use. Para mantener el sitio privado, puede usar uno o varios de los métodos siguientes:
- Póngase en contacto con el proveedor de hospedaje para establecer reglas de firewall que permitan el acceso al sitio de prueba solo desde direcciones IP que use para realizar pruebas.
- Oculte la dirección URL para que no sea similar a la dirección URL del sitio público.
- Use un archivo robots.txt para asegurarse de que los motores de búsqueda no rastreen el sitio de prueba ni notifiquen vínculos a él en los resultados de la búsqueda.
El primero de estos métodos es obviamente el más seguro, pero el procedimiento es específico de cada proveedor de hospedaje y no se tratará en este tutorial. Si organiza con su proveedor de hospedaje para permitir que solo su dirección IP navegue a la dirección URL de la cuenta de prueba, teóricamente no tiene que preocuparse por el rastreo de motores de búsqueda. Pero incluso en ese caso, implementar un archivo robots.txt es una buena idea como una copia de seguridad en caso de que la regla de firewall se desactive accidentalmente.
El archivo robots.txt va en la carpeta del proyecto y debe tener el siguiente texto en ella:
User-agent: *
Disallow: /
La línea User-agent
indica a los motores de búsqueda que las reglas del archivo se aplican a todos los rastreadores web (robots) del motor de búsqueda y la línea Disallow
especifica que no se debe rastrear ninguna página del sitio.
Probablemente quiera que los motores de búsqueda cataloguen el sitio de producción, por lo que debe excluir este archivo de la implementación de producción. Para ello, consulte ¿Puedo excluir archivos o carpetas específicos de la implementación? en Preguntas más frecuentes sobre la implementación del proyecto de aplicación web de ASP.NET. Asegúrese de especificar la exclusión solo para el perfil de publicación de producción.
La creación de una segunda cuenta de hospedaje es un enfoque para trabajar con un entorno de prueba que no es necesario, pero que puede merecer la pena el gasto agregado. En los tutoriales siguientes, seguirá usando IIS como entorno de prueba.
En el siguiente tutorial, actualizará el código de la aplicación e implementará el cambio en los entornos de prueba y producción.