Información general sobre la migración a ASP.NET 2.0

Actualización: noviembre 2007

Muchos de los conceptos de programación utilizados en las versiones anteriores de ASP.NET permanecen invariables en la versión 2.0 de ASP.NET, por lo que el desarrollo de aplicaciones en ASP.NET 2.0 les resultará fácil a los usuarios de ASP.NET 1.x. ASP.NET 2.0 se ejecutará en los mismos sistemas operativos y hardware que las aplicaciones de ASP.NET 1.x, incluidos Microsoft Windows 2000 e Internet Information Services (IIS) 5.0, Microsoft Windows XP e IIS 5.1 así como Microsoft Windows Server 2003 e IIS 6.0.

Si tiene una aplicación Web que desee migrar a ASP.NET, deberá comprobar las nuevas características de ASP.NET 2.0 antes de realizar la migración. Los cambios más importantes hacen referencia al modelo de código subyacente de las páginas, la estructura de carpetas de las aplicaciones Web y el modelo de compilación de páginas.

Antes de la migración, deberá asegurarse de que puede compilar la aplicación ASP.NET 1.x y ejecutarla en la versión de .NET Framework en la que fue desarrollada. Además, antes de iniciar la migración, asegúrese de que Microsoft .NET Framework versión 2.0 está instalado y funciona.

En este tema se abordan las consideraciones generales que deben tenerse en cuenta antes de migrar. Este tema incluye las secciones siguientes:

  • Ventajas de la migración

  • Modelos de página

  • Compartir datos entre distintas versiones de ASP.NET

  • Autenticación de formularios entre distintas versiones de ASP.NET

  • Conflictos de nombres

  • Compatibilidad con el marcado

  • HttpOnly y secuencias de comandos entre sitios

Ventajas de la migración

La migración de la aplicación Web a ASP.NET 2.0 tiene muchas ventajas, como una mejor separación entre el marcado y el código, carpetas de aplicación reservadas y compilación de código automática.

El nuevo modelo de código subyacente basado en clases parciales permite una mayor separación entre el marcado y el código, además de eliminar la necesidad de declaraciones de control y código de conexión automática de eventos en los archivos de código subyacente. En el modelo de compilación de páginas de ASP.NET, los archivos de código subyacente se compilan en tiempo de ejecución en varios ensamblados tras la primera solicitud a los correspondientes archivos .aspx.

ASP.NET utiliza ahora una estructura de aplicaciones Web mejorada que se basa en carpetas reservadas. Estas carpetas contienen contenido específico para ayudar al usuario a organizar la aplicación con mayor eficacia. Algunas carpetas reservadas, como App_Data, no proporcionan su contenido en respuesta a solicitudes Web, pero el acceso a las mismas puede realizarse desde código de aplicación. Para obtener más información, vea Estructura de sitios Web ASP.NET.

El compilador de ASP.NET 2.0 compila automáticamente el código de aplicación y los recursos dependientes cuando se realiza una solicitud a un recurso en el sitio Web. Por ejemplo, los cambios en una página Web existente o en los recursos dependientes de ASP.NET 2.0 pueden guardarse y se puede volver a compilar la página solicitada para la página y sus recursos. Esto se aplica a recursos como los archivos de código de la carpeta App_Code, los archivos de recursos de las carpetas App_GlobalResources y App_LocalResources, y los temas de la carpeta App_Themes. Para obtener más información sobre el modelo de compilación de páginas, consulte Información general sobre la compilación de ASP.NET.

Si se va a migrar una aplicación de gran tamaño, se recomienda utilizar Visual Web Developer 2005, Visual Web Developer 2005 Express, Visual Studio 2005 o Visual Studio 2005 Team System, cada uno de los cuales incluye un asistente para migración que automatiza muchas de las tareas de una migración normal. El asistente realiza los cambios necesarios para convertir las aplicaciones Web de ASP.NET 1.x en ASP.NET 2.0.

No es necesario migrar las aplicaciones Web porque ASP.NET 2.0 proporciona un elevado grado de compatibilidad con las versiones anteriores. Si no realiza ninguna migración, podrá seguir utilizando muchas de las características de ASP.NET 2.0 en las aplicaciones Web, mientras las aplicaciones utilicen .NET Framework 2.0. Para configurar la aplicación Web existente de modo que utilice .NET Framework 2.0, vea Cómo: Ejecutar aplicaciones de ASP.NET 1.x en .NET Framework 2.0.

Modelos de página

El modelo de página Web de código subyacente de ASP.NET permite almacenar el marcado de una página Web en un solo archivo, el archivo .aspx, y el código de programación en otro, el archivo de código subyacente. El modelo de código subyacente de ASP.NET 2.0 es diferente que el de las versiones anteriores ya que utiliza una nueva característica de lenguaje denominada clases parciales. El nuevo modelo de código subyacente de ASP.NET 2.0 permite separar aún más el marcado y el código que las versiones anteriores de ASP.NET.

Las páginas Web que utilicen el modelo de código subyacente anterior que está basado en el atributo CodeBehind de la directiva @ Page seguirán funcionando en ASP.NET 2.0. Sin embargo, se recomienda migrar estas páginas al nuevo modelo de código subyacente mediante el atributo CodeFile de la directiva @ Page y una definición de clase parcial en el archivo de código subyacente para poder beneficiarse de la mayor separación entre marcado y código así como de la compilación automática de las páginas. Las páginas Web que utilicen el antiguo modelo de código subyacente deberán compilarse manualmente.

Los cambios pueden realizarse manualmente, tal y como se describe en Cómo: Migrar a ASP.NET 2.0 una página web de ASP.NET 1.1 mediante el atributo CodeBehind, o bien, se puede usar una de las ediciones de Microsoft Visual Studio 2005 que incluya un asistente para migración, como Visual Web Developer 2005 Express.

La versión 1.1 de ASP.NET también admite una variante del modelo de código subyacente en la que el atributo CodeBehind de la directiva @ Page se sustituye por el atributo Src. Las páginas Web que utilicen el atributo Src seguirán funcionando en ASP.NET 2.0 y no requieren ninguna modificación.

Como alternativa al modelo de código subyacente, el modelo de página de un solo archivo coloca el código de programación y marcado de la página en el mismo archivo .aspx físico. Las páginas de un solo archivo de las versiones anteriores de ASP.NET seguirán funcionando en ASP.NET 2.0 y no requieren ninguna modificación.

Compartir datos entre distintas versiones de ASP.NET

Puede optar por migrar algunas partes del sitio Web a ASP.NET 2.0 y dejar otras sin modificación alguna. Si el sitio Web está dividido en aplicaciones Web independientes que funcionan conjuntamente para proporcionar la funcionalidad del sitio Web, quizás decida migrar algunas aplicaciones y otras no. En este caso, no podrá compartir el estado de la aplicación entre las aplicaciones migradas y no migradas. El estado de sesión tampoco se compartirá entre las aplicaciones, a menos que se proporcione una solución personalizada de estado de sesión a la que se pueda obtener acceso desde las páginas de ASP.NET 1.x y ASP.NET 2.0. Para obtener más información, vea Implementar un proveedor de almacén de estados de sesión.

Autenticación de formularios entre distintas versiones de ASP.NET

La autenticación de formularios es un modo de autenticar a los usuarios que utilizan su código y conservar un símbolo (token) de autenticación en una cookie o en la dirección URL de la página. La autenticación de formularios de ASP.NET puede configurarse de modo que funcione entre aplicaciones que ejecuten diferentes versiones de ASP.NET, de modo que los vales de autenticación emitidos por una versión los puede utilizar la otra versión.

La configuración de la autenticación de modo que funcione en distintas versiones de ASP.NET es similar al proceso de configuración de la autenticación en una red de servidores Web (batería de servidores Web). En ambos casos, se establece explícitamente el valor de los atributos validationKey y decryptionKey del elemento machineKey para las aplicaciones que van a compartir los vales de autenticación con la misma clave. Para admitir la autenticación entre distintas versiones de ASP.NET, es preciso realizar un cambio de configuración parcial; es decir, deberá establecer el valor del atributo decryption del elemento machineKey en 3DES en el archivo Web.config de la aplicación ASP.NET 2.0. El cifrado predeterminado de ASP.NET 2.0 es AES, mientras que las versiones anteriores de ASP.NET utilizan 3DES. Para obtener más información, vea Información general sobre la autenticación de formularios de ASP.NET.

Conflictos de nombres

Antes de realizar la migración, se recomienda examinar la aplicación Web y buscar los nombres que estén en conflicto con los espacios de nombres y clases de características de .NET Framework 2.0. Pueden surgir conflictos cuando se utilizan nombres comunes como caché, suscripción, perfil y función en la aplicación Web que ya se utilizan en .NET Framework. Para evitar un conflicto de nombres, busque en el código las referencias a los nombres en cuestión y utilice una referencia completa.

ASP.NET 2.0 utiliza un diseño de sitio Web diferente que las versiones anteriores. Para que sea más fácil trabajar con las aplicaciones Web, ASP.NET reserva ciertos nombres de archivo y carpeta para determinados tipos de contenido. El contenido de las carpetas reservadas no se utiliza para las solicitudes Web, ya que puede generar problemas en la aplicación existente. Por consiguiente, antes de migrar archivos de aplicación individuales, se recomienda cambiar los nombres de los archivos o carpetas de la aplicación que estén en conflicto con los nombres de los archivos y carpetas reservadas de ASP.NET 2.0. Para obtener más información sobre las carpetas reservadas en los diseños de sitio Web de ASP.NET, consulte Diseño de sitios Web ASP.NET.

Compatibilidad con el marcado

De forma predeterminada, todo el marcado generado por ASP.NET y los controles de servidor Web incluidos con ASP.NET es compatible con el estándar XHTML 1.0 Transitional. Esto puede generar problemas de representación HTML imprevistos después de la migración. Para que resulte más fácil la migración de una aplicación Web, puede establecer el atributo de modo del elemento xhtmlConformance en Legacy en el archivo Web.config. Se trata de un paso temporal en el proceso de migración. Con el tiempo, se recomienda ejecutar la aplicación con el atributo mode del elemento xhtmlConformance establecido en Transitional. Además, se recomienda agregar el elemento DOCTYPE a las páginas migradas. Para obtener más información sobre las ventajas de la compatibilidad de las páginas Web con XHTML, consulte ASP.NET y XHTML.

HttpOnly y secuencias de comandos entre sitios

La propiedad HttpOnly de la clase HttpCookie es nueva en .NET Framework 2.0. Establecer esta propiedad en true puede ayudar a mitigar las amenazas procedentes de scripting entre sitios. La propiedad HttpOnly se establece automáticamente en true para las cookies de autenticación de formularios y las cookies de Id. de sesión, de forma que estas cookies no estén disponibles para el scripting del cliente. Si una página Web migrada produce una excepción NullReferenceException, esto podría indicar que se perdió la sesión del cliente porque la propiedad HttpOnly estaba establecida en true. En tal caso, puede utilizar una de las soluciones siguientes:

  • Establezca la propiedad HttpOnly de cada cookie en false en el controlador de eventos EndRequest de la clase HttpApplication en el archivo Global.asax.

  • Escriba un módulo personalizado que copie la cookie en otra cookie y borre la propiedad HttpOnly para que pueda manipularse mediante scripts del cliente.

  • Cree un administrador de Id. de sesión personalizado que no establezca la propiedad HttpOnly en true.

Para obtener más información sobre cómo mitigar el scripting entre sitios, consulte Mitigating Cross-site Scripting with HTTP-only Cookies.

Vea también

Conceptos

Información general sobre proyectos de aplicaciones web

Información general sobre la autenticación de formularios de ASP.NET

Referencia

Elemento machineKey (Esquema de configuración de ASP.NET)