Share via


Información general sobre simultaneidad de ASP.NET

Actualización: noviembre 2007

.NET Framework permite instalar varias versiones de Common Language Runtime en el mismo equipo. De forma predeterminada, cuando se instala .NET Framework en un equipo donde el tiempo de ejecución ya está instalado, todas las aplicaciones ASP.NET se actualizan automáticamente para utilizar esa versión de .NET Framework. Aunque las versiones posteriores de .NET Framework están diseñadas para ser compatibles con versiones anteriores, se puede configurar una aplicación ASP.NET para utilizar una versión específica del motor en tiempo de ejecución.

Este tema contiene:

  • Escenarios

  • Características de <su tecnología>

  • Background

  • Ejemplos de código

  • Referencia de clase

  • Recursos adicionales

  • Lo nuevo

Escenarios

Volver al principio

Características

Volver al principio

Background

Hasta ahora, cuando se actualizaba un componente o aplicación en un equipo, se quitaba la versión antigua y se reemplazaba por la versión más reciente. Si la nueva versión no es compatible con la versión anterior, esto suele interrumpir otras aplicaciones que utilizan el componente o aplicación. .NET Framework ofrece compatibilidad para la ejecución simultánea, ya que permite instalar a un tiempo múltiples versiones de un ensamblado o aplicación en el mismo equipo. Como se pueden instalar varias versiones simultáneamente, las aplicaciones administradas pueden seleccionar la versión que van a utilizar sin que esto afecte a otras aplicaciones que utilicen una versión diferente.

En ASP.NET, se dice que las aplicaciones se ejecutan simultáneamente cuando se instalan en el mismo equipo pero utilizan versiones diferentes de .NET Framework. En los temas siguientes se describe la admisión simultánea en ASP.NET y se explica cómo configurar las aplicaciones ASP.NET para la ejecución simultánea.

.NET Framework permite instalar múltiples versiones del Common Language Runtime en el mismo equipo. De forma predeterminada, cuando se instala .NET Framework en un equipo donde el tiempo de ejecución ya está instalado, todas las aplicaciones ASP.NET se actualizan automáticamente para utilizar esa versión de .NET Framework. La única excepción son las aplicaciones que se enlazan a una versión incompatible o posterior del motor en tiempo de ejecución. (El número de versión de .NET Framework determina normalmente la compatibilidad. Las diferencias entre las versiones principales normalmente son incompatibles, mientras que las diferencias entre las actualizaciones secundarias y el número de versión de compilación son compatibles). Aunque las versiones posteriores de .NET Framework están diseñadas para ser compatibles con versiones anteriores, se puede configurar una aplicación ASP.NET para utilizar una versión específica del motor en tiempo de ejecución.

Asignaciones de script para aplicaciones ASP.NET

Al instalar múltiples versiones de .NET Framework en el mismo equipo, cada instalación contiene su propia versión de la extensión ISAPI de ASP.NET (Aspnet_isapi.dll). La extensión ISAPI de ASP.NET determina qué versión de .NET Framework utilizará una aplicación. Puede configurar una aplicación ASP.NET para utilizar cualquier extensión ISAPI de ASP.NET. Para especificar qué extensión ISAPI de ASP.NET se va a utilizar para una aplicación ASP.NET, se registra una asignación de script (a veces denominada asignación de aplicación) con Internet Information Services (IIS) para la aplicación.

Una asignación de script asocia la extensión de un nombre de archivo (como .aspx) y verbo de HTTP (como GET y POST) a la extensión ISAPI adecuada. Por ejemplo, cuando IIS recibe una solicitud para un archivo .aspx, la asignación de script de la aplicación dirige IIS para que reenvíe el archivo .aspx a la versión apropiada de la extensión ISAPI de ASP.NET. La asignación de script para cada aplicación ASP.NET se establece, generalmente, en la consola de administración de Internet Information Services y se puede aplicar directamente a una aplicación, o heredar de una aplicación principal. De forma predeterminada, cuando se instala .NET Framework, las asignaciones de script de todas las aplicaciones ASP.NET existentes se actualizan automáticamente para utilizar la nueva extensión ISAPI de ASP.NET, a menos que la aplicación utilice una versión posterior o incompatible.

Para que volver a configurar la asignación de script en una aplicación ASP.NET sea más fácil, cada instalación de .NET Framework tiene su propia versión de la herramienta Registro de IIS en ASP.NET (Aspnet_regiis.exe). De forma predeterminada, esta herramienta se instala en el siguiente directorio:

%raíz del sistema%NúmeroVersión de \Microsoft.NET\Framework\

Puede utilizar esta herramienta para asignar una aplicación ASP.NET a la versión de la extensión ISAPI de ASP.NET que coincide con la herramienta.

Nota:

Como la herramienta Aspnet_regiis.exe está asociada a una versión específica de .NET Framework, para volver a configurar la asignación de script en una aplicación ASP.NET, debe utilizar la versión apropiada de la herramienta. La herramienta Aspnet_regiis.exe vuelve a configurar la asignación de script de una aplicación ASP.NET sólo a la versión de la extensión ISAPI de ASP.NET que coincide con la herramienta.

Además, se puede utilizar esta herramienta para mostrar el estado de todas las versiones instaladas de ASP.NET, registrar la versión asociada de ASP.NET, crear directorios de scripts en el cliente y realizar otras operaciones de configuración.

Para obtener más información sobre las asignaciones de script y la configuración de IIS, vea Setting Application Mappings in IIS 6.0 (IIS 6.0). Para obtener más información sobre cómo actualizar las asignaciones de script para una aplicación ASP.NET, vea Herramienta Registro de IIS en ASP.NET (Aspnet_regiis.exe).

Contadores de rendimiento de ASP.NET

Los contadores de rendimiento permiten supervisar el funcionamiento de ASP.NET desde la consola Rendimiento de Windows. Cada versión de .NET Framework instala un conjunto independiente de objetos del contador de rendimiento para supervisar las aplicaciones ASP.NET y ASP.NET en su totalidad. Estos objetos utilizan las convenciones de nomenclatura "Aplicaciones de ASP.NET v.X.X.XXXX.X" y "ASP.NET v.X.X.XXXX.X", respectivamente, donde v.X.X.XXXX.X indica la versión de ASP.NET.

Además, .NET Framework también instala el sistema ASP.NET y los contadores de rendimiento de aplicaciones de ASP.NET que se aplican a cualquier versión instalada de ASP.NET. Aunque estos contadores son válidos para todas las versiones de ASP.NET, siempre se corresponden con la última versión instalada. Si se desinstala la última versión de ASP.NET, estos contadores se vuelven a asociar automáticamente con la versión más reciente que quede de ASP.NET.

Servicio de estado de ASP.NET

El servicio de estado de ASP.NET se puede utilizar para administrar el estado de sesión en un equipo. Todas las versiones de ASP.NET que están instaladas en el mismo equipo comparten el servicio de estado que se instala con la última versión de ASP.NET. Esta versión se registra con el nombre de servicio aspnet_state. Por tanto, cuando se desinstala esta versión de ASP.NET, se registra la versión del servicio más reciente que quede en el equipo y se utiliza en su lugar. Para obtener más información acerca del servicio de estado de ASP.NET, vea Modos de estado de sesión.

Servidor de estado SQL de ASP.NET

El servidor de estado SQL de ASP.NET se utiliza para administrar el estado de sesión de SQL en un equipo. Todas las versiones de ASP.NET que están instaladas en el mismo equipo comparten el servidor de estado SQL que está instalado con la última versión de ASP.NET. Cuando esta versión de ASP.NET se desinstala, la última versión que quede en el equipo se registra entonces y se utiliza en su lugar. Para obtener más información acerca del servidor de estado SQL de ASP.NET, vea Modos de estado de sesión.

Administrar múltiples versiones de ASP.NET

.NET Framework permite instalar múltiples versiones del Common Language Runtime (CLR) en el mismo equipo. De esta forma una aplicación ASP.NET puede utilizar la versión que necesite sin afectar a otras aplicaciones. En las secciones siguientes se describe cómo instalar, desinstalar y volver a distribuir múltiples versiones de ASP.NET en el mismo equipo.

Instalar múltiples versiones de ASP.NET

Para agregar una versión de ASP.NET a un equipo, ejecute el programa de instalación del paquete redistribuible de .NET Framework (Dotnetfx.exe) para la versión que desee instalar. De forma predeterminada, todas las aplicaciones ASP.NET existentes se vuelven a configurar automáticamente para utilizar la versión de instalación del motor en tiempo de ejecución si se cumplen las siguientes condiciones:

  • La versión que se está instalando de .NET Framework es posterior a la versión asignada actualmente a la aplicación.

  • Esta versión de .NET Framework es compatible con la versión asignada a la aplicación. En general, el número de versión determina la compatibilidad. Por lo general, los cambios de números de versión de compilación y de revisión secundaria son compatibles, mientras que los números de revisiones principales no lo son.

    Nota:

    Aunque las aplicaciones ASP.NET se actualizan automáticamente para utilizar la versión que se está instalando de ASP.NET, siempre que se cumplan las condiciones anteriores, los valores de la configuración personalizada del archivo Machine.config actual no se transfieren al archivo Machine.config que acaba de instalar. Si la aplicación utiliza valores de configuración personalizados, asegúrese de que actualiza manualmente el archivo Machine.config o utilice la herramienta Registro de IIS en ASP.NET (Aspnet_regiis.exe) para reasignar la aplicación a la versión anterior de ASP.NET.

Para impedir la reasignación automática de todas las aplicaciones existentes a la versión de .NET Framework que se está instalando, utilice la opción de línea de comandos /noaspupgrade con el programa de instalación Dotnetfx.exe. El comando siguiente muestra la sintaxis:

Dotnetfx.exe /c:"install /noaspupgrade"

Para obtener más información sobre el paquete redistribuible de .NET Framework, vea Redistribuir.NET Framework.

Nota:

Cuando se instala .NET Framework mediante el elemento Agregar o quitar programas del Panel de control o con el Asistente para configurar su servidor de Windows, ASP.NET se habilita en la consola de bloqueo de seguridad de forma predeterminada. No obstante, si .NET Framework se instala mediante Microsoft Visual Studio, Windows Update o con el paquete redistribuible de .NET Framework (Dotnetfx.exe), ASP.NET se deshabilita de forma predeterminada.

Desinstalar una versión de ASP.NET

Si tiene instaladas varias versiones de ASP.NET en un equipo, puede desinstalar una versión específica. Por lo general, la desinstalación de ASP.NET se puede realizar desinstalando .NET Framework mediante el elemento Agregar o quitar programas del Panel de control de Windows. Durante el proceso de desinstalación, el programa de instalación llama a la herramienta Registro de IIS en ASP.NET (Aspnet_regiis.exe) con la opción -u (marcador de desinstalación).

Nota:

Si sólo desea desinstalar una versión de ASP.NET sin desinstalar la versión asociada de .NET Framework, puede utilizar la herramienta Aspnet_regiis.exe directamente. Cada instalación de .NET Framework contiene una versión asociada de la herramienta. Para desinstalar sólo ASP.NET, utilice la opción -u de la versión de la herramienta asociada con la versión de ASP.NET que desee desinstalar. Para obtener más información, vea Herramienta Registro de IIS en ASP.NET (Aspnet_regiis.exe).

La opción -u de la herramienta Aspnet_regiis.exe realiza las acciones siguientes:

  • Todas las aplicaciones ASP.NET asignadas a la versión de ASP.NET que se desinstale se reasignan a la última versión compatible en el equipo. Si no hay ninguna versión compatible, la asignación de secuencia de comandos de la aplicación se quita totalmente.

    Precaución:

    Al quitar las asignaciones de secuencias de comandos, IIS ofrece las páginas ASP.NET como texto literal. De este modo se puede exponer código fuente al cliente.

  • Si la versión de ASP.NET que está desinstalando es actualmente la última versión, el servicio de estado de ASP.NET se asigna a la última versión compatible. Si no hay ninguna versión compatible, el servicio de estado de ASP.NET se desinstala. (El servicio de estado de ASP.NET, que comparten todas las versiones compatibles de ASP.NET, siempre se asigna a la última versión instalada de ASP.NET.)

  • Los objetos de rendimiento y los contadores de rendimiento asociados de la versión desinstalada se quitan. Los contadores y los objetos genéricos de rendimiento que se aplican a todas las versiones instaladas de ASP.NET y de aplicaciones ASP.NET se dirigen a la última versión instalada que permanezca en el equipo.

  • Si ninguna instalación de ASP.NET adicional permanece en el equipo, se quitan la cuenta de usuario de ASPNET y las listas de control de acceso asociadas.

Para obtener información sobre otros posibles efectos de instalar varias versiones de ASP.NET, vea Información general sobre simultaneidad de ASP.NET.

Redistribución de terceros de .NET Framework

Las aplicaciones de terceros pueden empaquetar e instalar .NET Framework como parte de su instalación bajo una licencia especial de redistribución. De este modo, una aplicación puede instalar la versión específica de .NET Framework que necesite ejecutar. El paquete redistribuible de .NET Framework (Dotnetfx.exe) se proporciona para implementar una aplicación con el motor en tiempo de ejecución. La secuencia de comandos de la instalación predeterminada de Dotnetfx.exe puede no cumplir los requisitos de la aplicación. En ese caso, depende del usuario el utilizar las opciones que se describen a continuación para instalar .NET Framework como parte de la configuración de una aplicación.

Para obtener más información sobre el paquete redistribuible de .NET Framework, vea Redistribuir.NET Framework. Para obtener más información sobre el contrato de licencia para el usuario final (CLUF) del paquete redistribuible, vea Dónde obtener el paquete redistribuible de .NET Framework.

Deshabilitar las actualizaciones automáticas de asignaciones de secuencias de comandos

De forma predeterminada, cuando se instala .NET Framework en un equipo con una instalación existente, todas las aplicaciones ASP.NET se actualizan automáticamente para utilizar la nueva versión de .NET Framework, salvo que se enlacen las aplicaciones a una versión incompatible o una versión posterior del motor en tiempo de ejecución. Normalmente, sólo el administrador del sistema realiza este tipo de instalación. Al instalar .NET Framework como parte de una instalación de la aplicación, no se debe forzar a las otras aplicaciones a utilizar esa versión del motor en tiempo de ejecución.

Como parte de la secuencia de comandos, Dotnetfx.exe suele llamar a la herramienta Registro de IIS en ASP.NET (Aspnet_regiis.exe) con la opción -i para instalar ASP.NET. Esta opción intenta actualizar las asignaciones de secuencias de comandos de todas las aplicaciones de ASP.NET existentes. Para evitar que la instalación actualice automáticamente las asignaciones de secuencia de comandos de otras aplicaciones en el equipo, utilice la opción /noaspnetupgrade cuando emita el comando Dotnetfx.exe. Esta opción hace que el programa de instalación utilice la opción -ir de Aspnet_regiis.exe en su lugar, que omite las actualizaciones automáticas de asignaciones de secuencias de comandos, documentación predeterminada y los pasos de intercambio de MIME. El comando siguiente muestra la sintaxis:

Dotnetfx.exe /c:"install /noaspupgrade"

Actualizar las asignaciones de secuencias de comandos manualmente

En ocasiones, es necesario configurar manualmente las asignaciones de secuencias de comandos para una aplicación. Si la aplicación necesita su propio directorio virtual orientado a la versión que se está instalando de .NET Framework, asegúrese de que el programa de instalación de la aplicación también llama explícitamente a Aspnet_regiis.exe con la opción -s o -sn para configurar las asignaciones de secuencias de comandos.

El ejemplo siguiente muestra una línea de comandos que actualiza las asignaciones de secuencias de comandos para una aplicación denominada SampleApp1.

Aspnet_regiis.exe -s W3SVC/1/ROOT/SampleApp1

Para obtener más información, vea Herramienta Registro de IIS en ASP.NET (Aspnet_regiis.exe).

Unificación de ensamblados de .NET Framework

En la ejecución simultánea, una aplicación puede estar formada por componentes creados mediante diferentes versiones de .NET Framework. Esto puede crear conflictos entre las dependencias de los componentes. Por ejemplo, supongamos que el componente A se ha creado mediante la versión 1.1 de .NET Framework y necesita utilizar la versión 1.1 del ensamblado System.Data. El componente B de esta aplicación se ha creado mediante la versión 1.1 de .NET Framework y necesita utilizar la versión 2,0 del ensamblado System.Data. Si las versiones de los ensamblados son incompatibles, pero se cargan al mismo tiempo, esto puede generar coincidencias de tipo erróneas no deseadas o incluso otros problemas.

Cómo se determina la versión de .NET Framework que debe utilizar una aplicación

Para poder utilizar diferentes versiones del mismo ensamblado, cuando una aplicación utiliza componentes integrados en diferentes versiones de .NET Framework, la versión asociada con la aplicación determina qué versión de los ensamblados de .NET Framework debe utilizar la aplicación y todos los componentes. En el ejemplo anterior, si la aplicación se asocia con la versión 2.0 de .NET Framework, entonces se carga la versión 2.0 del ensamblado System.Data, que comparten todos los componentes utilizados en la aplicación. La referencia del componente A a la versión 1,1 del ensamblado System.Data se promociona en tiempo de ejecución para que haga referencia a la versión 2,0.

Si obtiene una versión actualizada de una ensamblado específico, puede asociar la aplicación con el ensamblado independientemente de la versión de .NET Framework asignada a su aplicación. Para ello, puede agregar elementos <bindingRedirect> a los archivos Machine.config o Web.config. Estos elementos asocian una aplicación a un ensamblado actualizado que reemplaza un ensamblado existente para ciertos tipos de aplicaciones. Por ejemplo, si en un futuro se lanza una versión actualizada de System.Web.Service.dll que admite la versión 1.2 de SOAP, puede utilizar esa versión en la aplicación, en vez de utilizar la instalada originalmente con .NET Framework.

Este comportamiento también se puede reemplazar en el archivo de configuración de host ASP.NET (Aspnet.config). ASP.NET utiliza este archivo para garantizar que la versión de System.Web.dll y de System.Web.RegularExpressions.dll coincidan siempre con la versión de la aplicación asociada, independientemente de los reemplazos realizados en el archivo Web.config.

A veces, es posible utilizar un componente creado mediante una versión posterior de ASP.NET en una aplicación creada con una versión anterior. La versión de la ISAPI de ASP.NET asociada con una aplicación determina siempre la versión del motor en tiempo de ejecución que se utiliza en una aplicación. Si la aplicación se configura para que utilice la versión anterior de .NET Framework, el componente se redirige automáticamente en tiempo de ejecución para que utilice también esa versión.

Cuando utilice un componente creado con una versión posterior de .NET Framework en una aplicación creada en una versión anterior, tenga en cuenta lo siguiente:

  • Asegúrese de que el componente no utiliza ninguna característica o no depende de ningún comportamiento específico de una versión posterior de .NET Framework. Estas características pueden no estar disponibles en la versión anterior del motor en tiempo de ejecución.

  • ASP.NET utiliza asignaciones de secuencias de comandos en IIS para enlazar una aplicación a una versión del motor en tiempo de ejecución. Los elementos de configuración <supportedRuntime> y <requiredRuntime> no se pueden utilizar en las aplicaciones ASP.NET.

Por otra parte, si la versión del motor en tiempo de ejecución utilizada para crear el componente está instalada en el equipo, también puede volver a configurar la aplicación para que utilice la versión posterior del motor en tiempo de ejecución. Como las versiones posteriores de .NET Framework han sido diseñadas para ser compatibles con versiones anteriores, la aplicación debe funcionar sin necesidad de realizar modificaciones. Sin embargo, debe asegurarse de que no se producen errores en su aplicación ejecutándola con una nueva versión de .NET Framework.

Volver al principio

Ejemplos de código

Temas "Cómo..." y tutoriales

Volver al principio

Referencia de clase

Volver al principio

Recursos adicionales

Volver al principio

Lo nuevo

Volver al principio

Vea también

Referencia

Volver al principio

Otros recursos

Ejecución simultánea