Tutorial: Configurar aplicaciones ASP.NET en IIS 7.0
Actualización: noviembre 2007
Si una aplicación web ASP.NET se hospeda en IIS 7.0, puede realizar la configuración para la aplicación de diferentes maneras. Entre estas estructuras se incluyen las siguientes:
Usar IIS Manager. Para obtener más información, vea Cómo: Abrir el Administrador de IIS e Internet Information Services (IIS) Manager.
Editar directamente el archivo Web.config. Puede hacer esto en Visual Studio o Visual Web Developer, o bien con un programa de edición de texto.
Usar la herramienta de línea de comandos de IIS 7.0 (Appcmd.exe). Esta utilidad permite especificar la configuración de IIS y la configuración de la aplicación web. Para obtener más información, vea IIS 7.0 Command-Line Tool.
Usar Instrumental de administración de Windows (WMI). El espacio de nombres WebAdministration del proveedor WMI de IIS 7.0 contiene las clases y los métodos que permiten crear script para las tareas de administración de sitios web, aplicaciones web y sus objetos y propiedades asociados. Para obtener más información, vea IIS 7.0: WMI.
IIS 7.0 tiene una arquitectura modular que permite especificar los módulos que constituyen la funcionalidad de un servidor web. Cuando se instala IIS 7.0, muchos módulos no están habilitados de forma predeterminada. Al trabajar con sitios web ASP.NET, podría desear habilitar los módulos siguientes:
El módulo Compatibilidad con la administración de IIS 6, que permite a Visual Studio usar llamadas a metabase para interactuar con el almacén de configuración de IIS 7.0.
El módulo Autenticación de Windows, que permite depurar las aplicaciones web en Visual Studio.
Para obtener más información, consulte Ejecutar aplicaciones web en Windows Vista con IIS 7.0 y Visual Studio y Ejecutar aplicaciones web en Windows Server 2008 con IIS 7.0 y Visual Studio.
En este tutorial, realizará la configuración con IIS Manager y, a continuación, verá cómo la configuración se refleja en el archivo Web.config de una aplicación web. Las tareas ilustradas en este tutorial incluyen lo siguiente:
Crear un módulo de código administrado personalizado y colocar el módulo en el directorio App_Code de una aplicación web.
Registrar el módulo personalizado con IIS Manager.
Agregar un encabezado HTTP personalizado con IIS Manager.
La funcionalidad del módulo no es importante en este tutorial. En su lugar, el tutorial muestra cómo el módulo se integra en la canalización de solicitudes y cómo la configuración de la aplicación con IIS Manager afecta al archivo Web.config.
Requisitos previos
Para poder completar este tutorial, necesitará:
IIS 7.0 instalado y ejecutándose en Windows Vista o Windows Server 2008.
Al menos un grupo de aplicaciones que se ejecute en el modo integrado de IIS 7.0.
El módulo Compatibilidad con la administración de IIS 6 habilitado en IIS 7.0.
Visual Studio 2008.
.NET Framework versión 3.0 o posterior.
Permisos administrativos en el equipo.
Una herramienta para examinar solicitudes y respuestas HTTP entre el equipo y servidores web, como la herramienta Fiddler, que está disponible en el sitio web Fiddler Web Debugging Proxy.
Nota: Fiddler es una herramienta de terceros que no es compatible con Microsoft.
Crear un módulo HTTP personalizado
Para comenzar, creará un nuevo sitio web.
Para crear un sitio Web nuevo
En Visual Studio, cree un nuevo sitio web HTTP local denominado WalkthroughIIS7.
Para obtener más información acerca de cómo crear un sitio web de IIS local, vea Tutorial: Crear un sitio Web local de IIS en Visual Web Developer.
En el menú Inicio, haga clic sucesivamente en Todos los programas, Accesorios y Ejecutar.
En el cuadro Abrir, escriba inetmgr y haga clic en Aceptar.
Nota: Si Control de cuentas de usuario (UAC) está habilitado, puede mostrar un mensaje al intentar obtener acceso a IIS Manager. En tal caso, haga clic en Continuar. Para obtener más información, vea User Account Control.
Compruebe que el sitio web está en un grupo de aplicaciones que se ejecuta en modo integrado.
Para obtener información sobre cómo establecer el modo de una aplicación web, vea Configure the Request-Processing Mode for an Application Pool.
Ahora puede crear el módulo HTTP personalizado.
Para crear un módulo HTTP personalizado
En Visual Studio, en el Explorador de soluciones, haga clic con el botón secundario en el nodo del proyecto web y, a continuación, haga clic en Agregar nuevo elemento.
Se abrirá el cuadro de diálogo Agregar nuevo elemento.
En Plantillas instaladas de Visual Studio, seleccione Clase.
Seleccione el lenguaje de programación que prefiere utilizar.
En el nombre de clase, escriba CustomModule y después haga clic en Agregar.
Si el sitio web aún no contiene una carpeta App_Code, aparece un mensaje que pregunta si desea colocar la clase en la carpeta App_Code. Si es así, haga clic en Sí.
En el archivo de clase, quite el código existente y reemplácelo con el código siguiente:
Imports System Imports System.Configuration Imports System.Web Imports System.Web.Security Imports System.Web.UI Public Class CustomModule Implements IHttpModule Public Sub New() ' Constructor End Sub Public Sub Init(ByVal app As HttpApplication) Implements IHttpModule.Init AddHandler app.BeginRequest, AddressOf Me.BeginRequest End Sub Public Sub BeginRequest(ByVal source As Object, ByVal e As EventArgs) Dim app As HttpApplication = CType(source, HttpApplication) Dim cont As HttpContext = app.Context Dim notification As String = cont.CurrentNotification.ToString() Dim postNotification As String = cont.IsPostNotification.ToString() cont.Response.Headers.Set("CustomHeader2", "ASPX, Event = " & notification & _ ", PostNotification = " & postNotification + _ ", DateTime = " & DateTime.Now.ToString()) End Sub Public Sub Dispose() Implements IHttpModule.Dispose End Sub End Class
using System; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; public class CustomModule : IHttpModule { public CustomModule() { // Constructor } public void Init(HttpApplication app) { app.BeginRequest += new EventHandler(BeginRequest); } public void BeginRequest(object source, EventArgs e) { HttpApplication app = (HttpApplication)source; HttpContext cont = app.Context; string notification = cont.CurrentNotification.ToString(); string postNotification = cont.IsPostNotification.ToString(); cont.Response.Headers.Set("CustomHeader2", "ASPX, Event = " + notification + ", PostNotification = " + postNotification + ", DateTime = " + DateTime.Now.ToString()); } public void Dispose() { } }
El código realiza lo siguiente:
Define un módulo de código administrado personalizado que implementa la interfaz IHttpModule.
Define un controlador de eventos para el evento BeginRequest de la instancia HttpApplication. El controlador de eventos define un encabezado personalizado para agregar a la colección de encabezados de respuesta.
Agrega el controlador a la canalización de solicitudes para la notificación en el método Init del módulo.
Dado que la clase implementa la interfaz IHttpModule, la clase debe implementar un método Init y un método Dispose. El método Dispose de este módulo no tiene ninguna funcionalidad, pero es donde puede implementar la lógica de eliminación si la necesita.
En el menú Generar, haga clic en Generar sitio web para asegurarse de que no existen errores en el módulo.
Como última tarea de esta sección, creará páginas ASP.NET y HTML que le permitirán probar el módulo personalizado más adelante en el tutorial.
Para crear páginas de prueba ASP.NET y HTML
Agregue una nueva página web ASP.NET de un solo archivo denominada ASPXpage.aspx a la carpeta raíz de la aplicación.
Quite el marcado existente y reemplácelo con el marcado siguiente:
<%@ Page Language="VB" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script > </script> <html xmlns="http://www.w3.org/1999/xhtml" > <head > <title>ASPX Module Test Page</title> </head> <body> <form id="form1" > <div> <%= Response.Headers.Get("CustomHeader2").ToString() %> </div> </form> </body> </html>
<%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script > </script> <html xmlns="http://www.w3.org/1999/xhtml" > <head > <title>ASPX Module Test Page</title> </head> <body> <form id="form1" > <div> <%= Response.Headers.Get("CustomHeader2").ToString() %> </div> </form> </body> </html>
Agregue una nueva página HTML denominada HTMLPage.htm a la carpeta raíz de la aplicación web.
Agregue el marcado siguiente a la página HTML.
<!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>HTML Module Test Page</title> </head> <body> <div> HTML page. <br /> </div> </body> </html>
<!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>HTML Module Test Page</title> </head> <body> <div> HTML page. <br /> </div> </body> </html>
Guarde todos los cambios.
Ejecute individualmente la página ASPXpage.aspx y la página HTMLpage.htm para asegurarse de que se pueden ver en un explorador.
Nota: Deje la aplicación Visual Studio abierta. Volverá a esta aplicación para comprobar los cambios de configuración que realizará con IIS Manager.
En este punto, las páginas se ejecutan pero no invocan el módulo personalizado. En el procedimiento siguiente, agregará el módulo personalizado a la canalización de solicitudes.
Realizar cambios de configuración mediante IIS Manager
En esta sección usará IIS Manager para realizar varias configuraciones para la aplicación IIS. Registrará el módulo personalizado, agregará un encabezado personalizado y desactivará la compresión estática.
Para registrar el módulo de código administrado personalizado
En el menú Inicio, haga clic sucesivamente en Todos los programas, Accesorios y Ejecutar.
En el cuadro Abrir, escriba inetmgr y haga clic en Aceptar.
Nota: Si Control de cuentas de usuario (UAC) está habilitado, puede mostrar un mensaje al intentar obtener acceso a IIS Manager. En tal caso, haga clic en Continuar. Para obtener más información, vea User Account Control.
En el panel Conexiones, expanda el nombre del equipo o del servidor que hospeda el sitio web.
Expanda la carpeta Sitios.
Seleccione el sitio web WalkthroughIIS7. En Windows Server 2008, si la aplicación web es una aplicación de un sitio web, expanda primero el sitio web y a continuación seleccione WalkthroughIIS7.
De forma predeterminada, el panel central de IIS Manager muestra las opciones de configuración del servidor web por área. En la aplicación web WalkthroughIIS7 hay dos áreas: ASP.NET e IIS.
En la sección IIS del panel central, haga doble clic en el icono Módulos.
El detalle Módulos del panel central muestra todos los módulos actualmente configurados para IIS.
En el panel Acciones, haga clic en Agregar módulo administrado.
Aparece el cuadro de diálogo Agregar módulo administrado.
En el cuadro Nombre, escriba CustomModule.
El nombre puede ser cualquier palabra o frase que describa el módulo. En este tutorial usará simplemente el nombre del módulo.
En la lista Tipo, seleccione o escriba el nombre completo del tipo administrado del módulo.
El tipo CustomModule aparece en la lista porque la configuración de IIS incluye cualquier clase de la carpeta App_Code que implementa IHttpModule.
Asegurarse de que la casilla Invocar para solicitudes a aplicaciones ASP.NET o controladores administrados no está activada.
En este tutorial, desea que el módulo se aplique a todas las solicitudes de la canalización, no sólo a las solicitudes ASP.NET.
Haga clic en Aceptar.
El módulo de código administrado se agrega a la lista de módulos. Es posible que deba desplazarse o volver a ordenar la lista para ver el módulo agregado.
Para agregar un encabezado de respuesta personalizado
En el panel izquierdo de IIS Manager, haga clic en el nombre del nodo WalkthroughIIS7 para mostrar el panel de configuración principal del sitio.
En el panel central, en la sección de configuración de IIS, haga doble clic en el icono Encabezados de respuesta HTTP.
En el panel central se muestra el detalla de la característica Encabezados de respuesta HTTP. Muestra todos los encabezados de respuesta HTTP actualmente definidos.
En el panel Acciones, haga clic en Agregar.
Se muestra el cuadro de diálogo Agregar encabezado de respuesta HTTP personalizado.
En el cuadro de texto Nombre, escriba CustomHeader1.
El nombre puede ser cualquier palabra o frase que describa el encabezado.
En el cuadro de texto Valor, escriba el valor SampleHeader.
Ahora desactivará la compresión estática. De esta forma evita que se comprima el contenido estático, como las páginas HTML.
Para desactivar la compresión estática
Haga clic en el nombre del nodo WalkthroughIIS7 en el panel izquierdo para ver el panel de configuración principal del sitio en el panel central.
En el panel central de IIS Manager, haga doble clic en el icono Compresión en la sección de configuración de IIS.
El detalle de la característica Compresión se muestra en el panel central.
Asegúrese de que la casilla Habilitar compresión de contenido estático está desactivada.
Comprobar los cambios de configuración en Visual Studio
En este tutorial, ha realizado tareas de configuración mediante IIS Manager. En este procedimiento, verá los cambios en el archivo Web.config de la aplicación.
Para comprobar el registro del módulo en el archivo Web.config
Vuelva a la aplicación Visual Studio y a la aplicación WalkthroughIIS7.
En el Explorador de soluciones, haga clic con el botón secundario en el nombre del sitio web y haga clic en Actualizar carpeta.
De esta forma hace que la vista en Visual Studio de la carpeta del sitio web se sincroniza con la carpeta y los archivos en disco.
Si la aplicación no contenía originalmente un archivo Web.config, ahora hay un archivo Web.config en la aplicación web. Si la aplicación ya tenía un archivo Web.config, los cambios se realizan en el archivo.
En el Explorador de soluciones, haga doble clic en el archivo Web.config para ver su contenido.
La sección system.webServer incluye los cambios de configuración realizados con IIS Manager. La sección system.webServer incluye los siguientes elementos secundarios.
Un elemento modules que registra el módulo personalizado para la canalización de procesamiento de solicitudes.
Un elemento httpProtocol que define el encabezado de respuesta personalizado.
Un elemento urlCompression que deshabilita la compresión estática.
La sección system.webServer tendrá un aspecto similar al ejemplo siguiente:
<system.webServer> <modules> <add name="CustomModule" type="CustomModule" preCondition="" /> </modules> <httpProtocol> <customHeaders> <add name="CustomHeader1" value="SampleHeader" /> </customHeaders> </httpProtocol> <urlCompression doStaticCompression="false" /> </system.webServer>
Para obtener más información sobre la sección system.webServer, vea Usar la configuración de ASP.NET e IIS 7.0: system.webServer Section Group (IIS Settings Schema).
Probar el módulo personalizado
IIS 7.0 cuenta con una canalización de solicitudes integrada. Las solicitudes de todos los recursos de aplicación (como una página .aspx o una página .htm) pueden provocar notificaciones de la canalización en un módulo de código administrado como el módulo personalizado que ha creado en este tutorial.
Nota: |
---|
Cuando configuró el módulo de código administrado en IIS Manager, no seleccionó la opción Invocar para solicitudes a aplicaciones ASP.NET o controladores administrados. Si hubiese seleccionado esta opción, el módulo personalizado sólo recibiría las notificaciones de la canalización para recursos de ASP.NET y no para los recursos estáticos como archivos HTML. |
Para comprobar que el módulo personalizado se aplica a todos los recursos
En Visual Studio, abra la página ASPXpage.aspx y presione CTRL+F5 para ver la página en un explorador.
El encabezado personalizado definido en el módulo se muestra en el explorador. En la página ASP.NET, no puede tener acceso al encabezado personalizado definido por IIS, porque esta información de encabezado se agrega una vez representado el contenido de la página en la secuencia. Sin embargo, puede confirmar que el encabezado se ha establecido mediante una herramienta que supervisa el tráfico HTTP, como Fiddler.
Abra la herramienta de supervisión del tráfico HTTP y actualice la página ASPXpage.aspx en el explorador.
Nota: Si la dirección URL de la página ASPXpage.aspx usa localhost, cambie localhost al nombre del equipo donde está instalado IIS 7.0. En un escenario de desarrollo típico, éste es también el equipo donde se ejecuta Visual Studio.
Compruebe que CustomHeader1 y CustomHeader2 aparecen en la colección de encabezados de la respuesta.
Vea HTMLPage.htm en un explorador.
Compruebe que CustomHeader1 y CustomHeader2 aparecen en la colección de encabezados de la respuesta.
Pasos siguientes
Este tutorial le ha proporcionado una introducción a la configuración de ASP.NET en IIS 7.0. La configuración para el servidor web de IIS 7.0 y para ASP.NET se unifica en un archivo de configuración que puede modificar con una única interfaz administrativa.
También podría explorar la configuración adicional de IIS Manager y comprobar cómo los cambios se reflejan en el archivo de configuración. Para obtener más información, vea Internet Information Services (IIS).
Vea también
Tareas
Tutorial: Configurar aplicaciones ASP.NET en IIS 6.0 usando MMC
Conceptos
Mover una aplicación ASP.NET de IIS 6.0 a IIS 7.0