Compartir a través de


Mover una aplicación ASP.NET de IIS 6.0 a IIS 7.0

Actualización: noviembre 2007

En este tema se describe cómo mover una aplicación web de Internet Information Services (IIS) 6.0 a IIS 7.0. Las aplicaciones web de IIS 7.0 se pueden configurar para utilizar el modo clásico o el modo integrado. El modo clásico mantiene la compatibilidad con versiones anteriores de IIS mediante una extensión ISAPI para invocar el tiempo de ejecución de ASP.NET. Esta opción requiere por lo general pocas o ninguna modificación en las aplicaciones existentes.

El modo integrado de IIS 7.0 es una canalización de procesamiento de solicitudes unificada que combina la canalización de solicitudes de ASP.NET con la canalización de solicitudes básica de IIS. La canalización integrada proporciona un rendimiento mejorado, proporciona modularidad para la configuración y la administración, y aporta flexibilidad para extender IIS con módulos de código administrado. Por ejemplo, puede definir un módulo de código administrado en la carpeta App_Code de la aplicación web y registrarlo para que se aplique a todas las solicitudes de IIS, que incluyen las solicitudes para archivos estáticos.

El uso del modo integrado de IIS 7.0 puede requerir unos cambios mínimos en el archivo Web.config de una aplicación. Podrían ser necesarios algunos cambios adicionales si la aplicación utiliza módulos personalizados que implementen la interfaz IHttpModule.

Para obtener información general sobre la canalización de procesamiento de solicitudes en el modo integrado de IIS 7.0, vea Información general sobre el ciclo de vida de una aplicación ASP.NET para IIS 7.0. Si usa IIS 7.0, puede ejecutar aplicaciones en modo clásico y en modo integrado simultáneamente en el mismo servidor. Ambos modos son compatibles con .NET Framework versión 2.0 y versiones posteriores. .NET Framework versión 1.1 sólo se admiten en modo clásico. Para obtener más información sobre cómo actualizar desde versiones anteriores de IIS a IIS 7.0, vea Upgrading ASP.NET Applications to IIS 7.0: Differences between IIS 7.0 Integrated Mode and Classic Mode.

Nota:

Puede usar la información de este tema para mover las aplicaciones web de IIS 5.x a IIS 7.0. Sin embargo, podrían ser necesarios cambios adicionales, que no se tratan aquí. Para obtener más información, vea .

Este tema contiene las siguientes secciones:

  • Archivos Web.config en IIS 7.0

  • Mover una aplicación web al modo clásico

  • Mover una aplicación web al modo integrado

Archivos Web.config en IIS 7.0

Al mover una aplicación web ASP.NET al modo integrado de IIS 7.0, debe actualizar el archivo Web.config. IIS 7.0 incluye cambios en la forma de administrar los archivos Web.config y en los tipos de valores que se pueden almacenar en los archivos Web.config. La nueva configuración se encuentra en una nueva sección de configuración denominada system.webServer.

En IIS 6.0, el complemento MMC de ASP.NET proporciona características de administración relacionadas con IIS para configurar ASP.NET. Para obtener más información, vea Tutorial: Configurar aplicaciones ASP.NET en IIS 6.0 usando MMC.

En IIS 7.0, la administración de aplicaciones ASP.NET se integra más estrechamente con la administración de IIS y no existe ningún complemento independiente. En su lugar, toda la configuración de IIS y ASP.NET se realiza con IIS Manager. Dado que la información de configuración de IIS 7.0 se base en el sistema de configuración de .NET Framework, el archivo Web.config de una aplicación que se ejecuta en IIS 7.0 contiene configuraciones del servidor web y de ASP.NET. Por ejemplo, en un archivo Web.config de una aplicación ASP.NET que se ejecuta en IIS 7.0, puede especificar el archivo predeterminado que se devolverá cuando un explorador no solicite un archivo específico. (En IIS 6.0 y versiones anteriores de IIS, este era un valor que se mantenía en la metabase de IIS.)

Editar archivos Web.config

Puede cambiar el archivo Web.config de una aplicación web que se ejecuta en IIS 7.0 de las maneras siguientes:

  • Mediante la edición directa del archivo Web.config, ya sea con Visual Studio o Visual Web Developer, o bien con un programa de edición de texto.

  • Mediante IIS Manager. Para obtener más información, vea Internet Information Services (IIS) Manager.

  • Mediante la herramienta de administración de sitios web de ASP.NET. Para obtener más información, consulte Herramienta Administración de sitios Web en ASP.NET.

    Nota:

    Los cambios realizados en la herramienta de administración de sitios web no afectan a los elementos de configuración secundarios del elemento system.webServer.

  • Mediante 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 en la línea de comandos. Para obtener más información, vea IIS 7.0 Command-Line Tool.

La sección system.webServer

La sección de configuración system.webServer del archivo Web.config especifica valores de IIS 7.0 que se aplican a la aplicación web. La sección system.WebServer es un elemento secundario del elemento configuration. Para obtener más información, vea IIS 7.0: system.webServer Section Group (IIS Settings Schema).

Entre los ejemplos de valores de servidor web que puede establecer en el grupo de configuración system.WebServer se incluyen los siguientes:

  • El documento predeterminado que el servidor web devuelve a un cliente cuando la solicitud no incluye un recurso concreto (elemento defaultDocument).

  • Los valores de compresión para las respuestas (elemento httpCompression).

  • Encabezados personalizados (elemento customHeaders de la sección httpProtocol).

  • Módulos (elemento modules).

  • Controladores (elemento handlers).

Alguna configuración sólo se aplica al modo integrado de IIS 7.0 y no al modo clásico. Por ejemplo, si la aplicación se ejecuta en modo clásico, los módulos de código administrado y los controladores especificados en la sección system.WebServer del archivo Web.config se omiten. En su lugar, los módulos de código administrado y los controladores se deben definir como en versiones anteriores de IIS, mediante los elementos httpModules y httpHandlers de la sección system.web.

Para obtener ejemplos sobre el uso de la sección de configuración system.webServer, vea Cómo: Configurar la sección <system.webServer> para IIS 7.0.

Mover una aplicación web al modo clásico

Normalmente, mover una aplicación web de IIS 6.0 al modo clásico de IIS 7.0 sólo requiere la colocación de la aplicación en un grupo de aplicaciones que se ejecute en el modo clásico. Por ejemplo, al instalar IIS 7.0 con , de forma predeterminada el servidor web se configura para funcionar en modo integrado. También se configura para ejecutarse en el grupo de aplicaciones predeterminado, que se denomina DefaultAppPool. Para ejecutar una aplicación web en modo clásico, utilice la aplicación Classic.NETAppPool o cree un nuevo grupo de aplicaciones configurado para ejecutarse en modo clásico. Para obtener información sobre cómo crear un grupo de aplicaciones, vea Create an Application Pool.

En los módulos personalizados que implementan la interfaz IHttpModule en una aplicación que se ejecuta en modo clásico sólo se notifican las solicitudes de canalización que administra el tiempo de ejecución de ASP.NET. Por ejemplo, se les notifican las solicitudes para una página .aspx. El ciclo de vida de la aplicación en el modo clásico es el mismo que para ASP.NET en IIS 6.0. Para obtener más información, consulte Información general sobre el ciclo de vida de una aplicación ASP.NET para IIS 5.0 y 6.0.

Si una aplicación que se ejecuta en modo clásico contiene un controlador que exige una asignación del script para administrar una extensión personalizada en IIS, debe registrar el controlador en los grupos httpHandler y handler. Para asignar la extensión de nombre de archivo personalizada a la extensión ISAPI de ASP.NET (Aspnet_isapi.dll) debe especificar los atributos scriptProcessor y modules en el elemento handler. Estos atributos especifican que el módulo que define el controlador es una extensión ISAPI y especifican la ruta de acceso de esta extensión. Así es cómo el modo clásico de IIS 7.0 proporciona compatibilidad con versiones anteriores de IIS. Sin embargo, si ejecuta la aplicación en modo integrado, debe quitar los atributos scriptProcessor y modules. Para obtener más información, consulte Cómo: Configurar una extensión de controlador HTTP en IIS.

Al mover una aplicación web de IIS 6.0 al modo clásico, no se garantiza el trabajo en el modo integrado sin realizar cambios. Si cambia una aplicación del modo clásico al modo integrado (y cambia los módulos personalizados y controladores), podría tener que realizar modificaciones adicionales para que la aplicación se ejecute correctamente en el modo integrado. En la siguiente sección de este tema se explica cómo mover una aplicación al modo integrado de IIS 7.0.

Mover una aplicación web al modo integrado

Las aplicaciones web que no incluyen módulos personalizados ni controladores normalmente funcionan sin realizar cambios en el modo integrado de IIS 7.0. Las aplicaciones web que se basan en módulos personalizados o controladores requieren los siguientes pasos para permitir que la aplicación se ejecute en modo integrado:

Los módulos que implementan la interfaz IHttpModule se conocen como módulos de código administrado porque se generan mediante .NET Framework. Los módulos de código administrado se pueden registrar en el nivel de servidor o en el nivel de aplicación. Los módulos de código nativo son DLL (código no administrado) que sólo se registran en el servidor. Las características básicas de ASP.NET, como el estado de sesión y la autenticación de formularios, se implementan como módulos administrados en el modo integrado.

Al mover una aplicación del modo clásico al modo integrado, puede dejar los registros de módulos personalizados y de controlador para el modo clásico o bien puede quitarlos. Si no quita los registros httpModules y httpHandlers que se utilizan en el modo clásico, debe establecer el atributo validateIntegratedModeConfiguration del elemento validation en false para evitar errores. El elemento validation es un elemento secundario del elemento system.webServer. Para obtener más información, vea la sección sobre cómo deshabilitar el mensaje de migración en ASP.NET Integration with IIS 7.0.

Migrar un archivo Web.config para su uso en el modo integrado

Si un módulo o un controlador se definen en el nivel de aplicación, no se invocan automáticamente. Esto incluye los módulos o los controladores que se definen en un ensamblado de la carpeta Bin o como código fuente en la carpeta App_Code y para los que no se define su registro en la sección system.webServer del archivo Web.config. Para que el módulo o el controlador participen en la canalización de solicitudes del modo integrado, debe registrarlos con uno de los métodos siguientes:

Clases y propiedades para trabajar en el modo integrado

Al trabajar con una aplicación en el modo integrado de IIS 7.0 y con .NET Framework versión 3.0 o posteriores, puede usar las clases y miembros siguientes que no están disponibles en el modo clásico:

Vea también

Conceptos

Ejecutar aplicaciones web en Windows Vista con IIS 7.0 y Visual Studio