Share via


Vue d'ensemble de l'exécution côte à côte dans ASP.NET

Mise à jour : novembre 2007

Le .NET Framework vous permet d'installer plusieurs versions du Common Language Runtime sur le même ordinateur. Par défaut, lorsque .NET Framework est installé sur un ordinateur où le runtime est déjà présent, toutes les applications ASP.NET sont automatiquement mises à jour afin d'utiliser cette version du .NET Framework. Bien que les versions ultérieures de .NET Framework soient conçues pour offrir une compatibilité descendante, il se peut que vous souhaitiez configurer une application ASP.NET de façon à utiliser une version spécifique du runtime.

Cette rubrique contient les sections suivantes :

  • Scénarios

  • Fonctionnalités de <ici, votre technologie>

  • Contexte

  • Exemples de code

  • Référence de Classe

  • Ressources supplémentaires

  • Nouveautés

Scénarios

Retour au début

Fonctionnalités

Retour au début

Contexte

D'ordinaire, lorsqu'un composant ou une application est mis à jour sur un ordinateur, l'ancienne version est supprimée et remplacée par la version la plus récente. Si la nouvelle version n'est pas compatible avec l'ancienne, elle entraîne généralement un blocage d'autres applications qui utilisent le composant ou l'application. .NET Framework assure la prise en charge de l'exécution côte à côte, permettant ainsi l'installation de plusieurs versions d'un assembly ou d'une application sur le même ordinateur simultanément. Comme plusieurs versions peuvent être installées simultanément, les applications managées peuvent sélectionner la version à utiliser sans affecter d'autres applications qui utilisent une version différente.

Dans ASP.NET, les applications sont exécutées en mode côte à côte lorsqu'elles sont installées sur le même ordinateur, mais utilisent des versions différentes du .NET Framework. Les rubriques suivantes décrivent la prise en charge de l'exécution côte à côte dans ASP.NET et la manière de configurer des applications ASP.NET pour l'exécution côte à côte.

Le .NET Framework vous permet d'installer plusieurs versions du Common Language Runtime sur le même ordinateur. Par défaut, lorsque le .NET Framework est installé sur un ordinateur où le runtime est déjà présent, toutes les applications ASP.NET sont automatiquement mises à jour afin d'utiliser cette version du .NET Framework. Les seules exceptions concernent des applications qui sont liées à une version incompatible du runtime ou à une version ultérieure du runtime. (La compatibilité est déterminée en général par le numéro de version du .NET Framework. Des différences de version majeures sont en principe incompatibles, tandis que des différences de mises à jour mineures et de numéro de build sont compatibles.) Bien que les versions ultérieures du .NET Framework soient conçues pour offrir une compatibilité descendante, il se peut que vous souhaitiez configurer une application ASP.NET de façon à utiliser une version spécifique du runtime.

Scriptmaps pour les applications ASP.NET

Lorsque plusieurs versions du .NET Framework sont installées sur le même ordinateur, chaque installation possède sa propre version de l'extension ISAPI ASP.NET (Aspnet_isapi.dll). L'extension ISAPI ASP.NET détermine la version du .NET Framework qu'une application utilise. Vous pouvez configurer une application ASP.NET pour utiliser une extension ISAPI ASP.NET. Pour spécifier l'extension ISAPI ASP.NET qu'une application ASP.NET doit utiliser, un scriptmap (quelquefois connu sous le nom de plan d'application) est inscrit auprès des services IIS de l'application.

Un scriptmap associe une extension de nom de fichier (comme .aspx) et un verbe HTTP (comme GET et POST) avec l'extension ISAPI appropriée. Par exemple, quand IIS reçoit une demande pour un fichier .aspx, le scriptmap de l'application demande à IIS d'envoyer le fichier .aspx à la version appropriée de l'extension ISAPI ASP.NET. Le scriptmap de chaque application ASP.NET est normalement défini dans la console de gestion IIS et peut s'appliquer directement à une application, ou être hérité d'une application parente. Par défaut, lorsque le .NET Framework est installé, les scriptmaps de toutes les applications ASP.NET existantes sont automatiquement mises à jour pour utiliser la nouvelle extension ISAPI ASP.NET, sauf si l'application utilise une version incompatible ou ultérieure.

Pour faciliter la reconfiguration du scriptmap pour une application ASP.NET, chaque installation du .NET Framework possède sa propre version de l'outil ASP.NET IIS Registration (Aspnet_regiis.exe). Par défaut, cet outil est installé dans le répertoire suivant :

%system root%\Microsoft.NET\Framework\NuméroVersion

Vous pouvez utiliser cet outil pour mapper une application ASP.NET à la version de l'extension ISAPI ASP.NET correspondant à l'outil.

Remarque :

Étant donné que l'outil Aspnet_regiis.exe est associé à une version spécifique du .NET Framework, vous devez utiliser la version appropriée de Aspnet_regiis.exe pour reconfigurer le scriptmap pour une application ASP.NET. L'outil Aspnet_regiis.exe reconfigure le scriptmap d'une application ASP.NET avec la seule version de l'extension ISAPI ASP.NET correspondant à l'outil.

L'outil peut également être utilisé pour afficher l'état de toutes les versions installées de ASP.NET, inscrire la version de ASP.NET associée, créer des répertoires de scripts côté client et effectuer d'autres opérations de configuration.

Pour plus d'informations sur les scriptmaps et la configuration IIS, consultez Setting Application Mappings in IIS 6.0 (IIS 6.0) Pour plus d'informations sur la mise à jour des scriptmaps d'une application ASP.NET, consultez ASP.NET IIS Registration, outil (Aspnet_regiis.exe).

Compteurs de performance ASP.NET

Les compteurs de performance vous permettent de contrôler le fonctionnement d'ASP.NET depuis la Console de performance Windows. Chaque version du .NET Framework installe un ensemble distinct de compteurs de performance pour surveiller les applications ASP.NET et ASP.NET proprement dit. Ces objets utilisent respectivement les conventions d'affectation de noms « ASP.NET Apps v.X.X.XXXX.X » et « ASP.NET v.X.X.XXXX.X », où v.X.X.XXXX.X désigne la version ASP.NET.

De plus, le .NET Framework installe aussi des compteurs de performance pour le système ASP.NET et pour les applications ASP.NET, qui s'appliquent à toutes les versions installées d'ASP.NET. Bien que ces compteurs soient valides pour toutes les versions d'ASP.NET, ils correspondent toujours à la dernière version installée. Si la dernière version de ASP.NET est désinstallée, ces compteurs sont automatiquement réassociés à la dernière version restante de ASP.NET.

Service d'état ASP.NET

Le service d'état ASP.NET peut être utilisé pour gérer l'état de session sur un ordinateur. Toutes les versions d'ASP.NET installées sur le même ordinateur partagent le service d'état qui est installé avec la version la plus récente d'ASP.NET. Cette version est inscrite avec le nom de service aspnet_state. Par conséquent, lorsque cette version d'ASP.NET est désinstallée, la dernière version du service présente sur l'ordinateur est inscrite et utilisée à la place. Pour plus d'informations sur l'état de service ASP.NET, consultez Modes d'état de session.

Serveur d'état SQL ASP.NET

Le serveur d'état SQL ASP.NET s'utilise pour gérer l'état de session dans SQL sur un ordinateur. Toutes les versions d'ASP.NET installées sur le même ordinateur partagent le serveur d'état SQL installé avec la version la plus récente d'ASP.NET. Lorsque cette version d'ASP.NET est désinstallée, c'est la dernière version présente sur l'ordinateur qui est inscrite et utilisé à la place. Pour plus d'informations sur le serveur d'état SQL ASP.NET, consultez Modes d'état de session.

Gestion de plusieurs versions d'ASP.NET

Le .NET Framework vous permet d'installer plusieurs versions du Common Language Runtime (CLR) sur le même ordinateur. Ceci permet à une application ASP.NET d'utiliser la version dont elle a besoin sans affecter d'autres applications. Les sections suivantes décrivent comment installer, désinstaller et redistribuer plusieurs versions d'ASP.NET sur le même ordinateur.

Installation de plusieurs versions de ASP.NET

Pour ajouter une version d'ASP.NET à un ordinateur, exécutez le programme d'installation du package redistribuable de .NET Framework (Dotnetfx.exe) pour la version que vous voulez installer. Par défaut, toutes les applications ASP.NET existantes sont automatiquement reconfigurées lors de l'installation pour utiliser la version d'installation du runtime si les conditions suivantes sont remplies :

  • La version .NET Framework en cours d'installation est une version ultérieure sur celle actuellement mappée à l'application.

  • La version .NET Framework en cours d'installation est compatible avec la version mappée sur l'application. En général, le numéro de version détermine la compatibilité. Les révisions et changements secondaires de numéro de build sont habituellement compatibles, tandis que les numéros de révision principaux ne le sont pas.

    Remarque :

    Bien que les applications ASP.NET soient mises à jour automatiquement pour utiliser la version ASP.NET en cours d'installation si les conditions précédentes sont remplies, les paramètres de configuration personnalisés dans le fichier Machine.config en cours ne sont pas transférés vers le fichier Machine.config nouvellement installé. Si votre application utilise des paramètres de configuration personnalisés, veillez à mettre à jour manuellement le nouveau Machine.config ou à utiliser l'outil ASP.NET IIS Registration (Aspnet_regiis.exe) pour remapper l'application sur la version précédente d'ASP.NET.

Pour éviter le remappage automatique de toutes les applications existantes sur la version de .NET Framework en cours d'installation, utilisez l'option de ligne de commande /noaspupgrade avec le programme d'installation Dotnetfx.exe. La commande suivante illustre la syntaxe :

Dotnetfx.exe /c:"install /noaspupgrade"

Pour plus d'informations sur le package redistribuable .NET Framework, consultez Redistribution du .NET Framework.

Remarque :

Quand le .NET Framework est installé par l'intermédiaire de l'élément Ajout/Suppression de programmes du Panneau de configuration ou de l'Assistant Configurer votre serveur de Windows, ASP.NET est activé dans la console Security Lockdown par défaut. Cependant, s'il est installé via Microsoft Visual Studio, Windows Update ou le package redistribuable .NET Framework (Dotnetfx.exe), ASP.NET est désactivé par défaut.

Désinstallation d'une version de ASP.NET

Si vous avez plusieurs versions de ASP.NET installées sur un ordinateur, vous pouvez désinstaller une version donnée. La désinstallation d'ASP.NET s'effectue habituellement en désinstallant .NET Framework via l'élément Ajout/Suppression de programmes du Panneau de configuration Windows. Lors du processus de désinstallation, le programme d'installation appelle l'outil ASP.NET IIS Registration (Aspnet_regiis.exe) avec l'option -u (indicateur de désinstallation).

Remarque :

Si vous souhaitez simplement désinstaller une version d'ASP.NET sans désinstaller le .NET Framework associé, vous pouvez utiliser Aspnet_regiis.exe directement. Chaque installation du .NET Framework contient une version associée de l'outil. Pour désinstaller uniquement ASP.NET, utilisez l'option -u de la version de l'outil associée à la version ASP.NET que vous souhaitez désinstaller. Pour plus d'informations, consultez la rubrique ASP.NET IIS Registration, outil (Aspnet_regiis.exe).

L'option -u de l'outil Aspnet_regiis.exe effectue les actions suivantes :

  • Toutes les applications ASP.NET mappées actuellement à la version ASP.NET en cours de désinstallation sont remappées sur la dernière version d'ASP.NET compatible présente sur l'ordinateur. Si aucune version compatible n'existe, le scriptmap pour l'application est supprimé complètement.

    Attention :

    La suppression des scriptmaps amènera IIS à servir les pages ASP.NET sous forme de texte littéral. Cela risque d'exposer du code source au client.

  • Si la version ASP.NET que vous désinstallez est actuellement la version la plus récente, le service d'état ASP.NET est mappé sur la version compatible la plus récente. S'il n'existe aucune version compatible, le service d'état ASP.NET est désinstallé. (Le service d'état ASP.NET, qui est partagé entre toutes les versions compatibles d'ASP.NET, est toujours mappé à la dernière version ASP.NET installée.)

  • Les objets de performance et les compteurs de performance associés propres à la version en cours de désinstallation sont supprimés. Les objets de performance génériques et les compteurs qui s'appliquent à toutes les versions ASP.NET installées et ceux des applications ASP.NET sont dirigés vers la dernière version installée présente sur l'ordinateur.

  • Si aucune installation ASP.NET supplémentaire ne demeure sur l'ordinateur, le compte d'utilisateur ASPNET et les listes de contrôle d'accès associées sont supprimés.

Pour plus d'informations sur les autres conséquences de l'installation de plusieurs versions ASP.NET, consultez Vue d'ensemble de l'exécution côte à côte dans ASP.NET.

Redistribution tierce du .NET Framework

Les applications tierces peuvent empaqueter et installer .NET Framework comme partie intégrante de leur programme d'installation dans le cadre d'une licence de redistribution spéciale. Cela permet à une application d'installer la version spécifique du .NET Framework qu'elle doit exécuter. Le package redistribuable de .NET Framework (Dotnetfx.exe) est fourni pour qu'une application se déploie avec le runtime. Le script d'installation par défaut de Dotnetfx.exe peut ne pas convenir aux besoins de votre application. Dans ce cas, il vous appartient d'utiliser les options décrites ci-dessous pour installer .NET Framework dans le cadre de l'installation de l'application.

Pour plus d'informations sur le package redistribuable .NET Framework, consultez Redistribution du .NET Framework. Pour plus d'informations sur le contrat de licence utilisateur final (CLUF) du package redistribuable, consultez Où se procurer le package redistribuable .NET Framework.

Désactivation des mises à jour de scriptmap automatiques

Par défaut, lorsque .NET Framework est installé sur un ordinateur avec une installation existante, toutes les applications ASP.NET sont automatiquement mises à jour pour utiliser la nouvelle version de .NET Framework, sauf si les applications sont liées à une version incompatible du runtime ou à une version ultérieure du runtime. Généralement, seul un administrateur système effectue ce type d'installation. Lorsque .NET Framework est installé dans le cadre du programme d'installation d'une application, il ne doit pas forcer d'autres applications sur l'ordinateur à utiliser cette version du runtime.

Dans le cadre du script d'installation, Dotnetfx.exe appelle normalement l'outil ASP.NET IIS Registration (Aspnet_regiis.exe) à l'aide de l'option -i pour installer ASP.NET. Cette option tente de mettre à jour les scriptmaps de toutes les applications ASP.NET existantes. Pour empêcher l'installation de mettre à jour automatiquement les scriptmaps des autres applications présentes sur l'ordinateur, utilisez l'option /noaspnetupgrade lors de l'émission de la commande Dotnetfx.exe. Cette option conduit le programme d'installation à utiliser l'option -ir d'Aspnet_regiis.exe, qui ignore les mises à jour automatiques des scriptmaps, la documentation par défaut et les étapes de permutation MIME. La commande suivante illustre la syntaxe :

Dotnetfx.exe /c:"install /noaspupgrade"

Mise à jour manuelle des scriptmaps

Il est parfois nécessaire de configurer manuellement les scriptmaps pour une application. Si l'application a besoin de son propre répertoire virtuel qui cible la version du .NET Framework en cours d'installation, veillez à ce que le programme d'installation de l'application appelle également Aspnet_regiis.exe de manière explicite avec l'option -s ou -sn pour configurer les scriptmaps.

Ce qui suit illustre un exemple de ligne de commande qui met à jour les scriptmaps pour une application nommée SampleApp1.

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

Pour plus d'informations, consultez la rubrique ASP.NET IIS Registration, outil (Aspnet_regiis.exe).

Unification des assemblys .NET Framework

Dans l'exécution côte à côte, il est possible qu'une application soit composée de composants générés à l'aide de versions différentes de .NET Framework. Cela peut créer des conflits entre les dépendances des composants. Par exemple, supposons qu'un composant A est généré à l'aide du .NET Framework version 1.1 et doit utiliser la version 1.1 de l'assembly System.Data. Supposons qu'un composant B est généré à l'aide du .NET Framework version 1.1 et doit utiliser la version 2.0 de l'assembly System.Data. Si les versions de l'assembly sont incompatibles mais sont chargées simultanément, cela peut entraîner des incompatibilités de types involontaires, voire des problèmes plus graves.

Détermination par une application de la version .NET Framework à utiliser

Pour que l'utilisation de versions différentes du même assembly soit possible, lorsqu'une application utilise des composants créés sur des versions différentes de .NET Framework, la version associée à une application détermine la version des assemblys de .NET Framework utilisée par l'application et par tous ses composants. Dans l'exemple, si l'application est associée à la version 2.0 de .NET Framework, la version 2.0 de l'assembly System.Data est ensuite chargée et partagée par tous les composants utilisés dans l'application. La référence du composant A à la version 1.1 de l'assembly System.Data est promue au moment de l'exécution à la référence version 2.0.

Si vous obtenez une version mise à jour d'un assembly spécifique, vous pouvez associer votre application à l'assembly, indépendamment de la version de .NET Framework mappée sur votre application. Pour ce faire, vous pouvez ajouter les éléments <bindingRedirect> aux fichiers Machine.config ou Web.config. Ces éléments associent une application à un assembly mis à jour remplaçant un assembly existant pour certains types d'applications. Par exemple, si une version mise à jour de System.Web.Service.dll est publiée à l'avenir et prend en charge SOAP version 1.2, vous pouvez faire en sorte que votre application utilise cette version, au lieu de la version installée à l'origine avec .NET Framework.

Ce comportement peut également être substitué dans le fichier de configuration d'hôte ASP.NET (Aspnet.config). ASP.NET utilise ce fichier pour garantir que les versions de System.Web.dll et System.Web.RegularExpressions.dll correspondent toujours à la version associée à une application, quelles que soient les substitutions spécifiées dans le fichier Web.config.

Parfois vous pouvez être amené à utiliser un composant généré à l'aide d'une version ultérieure de ASP.NET dans une application générée avec une version antérieure. N'oubliez pas que la version ISAPI ASPNET associée à une application détermine toujours la version du runtime utilisée pour une application. Si l'application est configurée pour utiliser la version antérieure de .NET Framework, le composant sera redirigé automatiquement au moment de l'exécution pour utiliser également cette version.

Lors de l'utilisation d'un composant généré avec une version ultérieure de .NET Framework dans une application générée sur une version antérieure, prenez en compte les points suivants :

  • Veillez à ce que le composant n'utilise pas de fonctionnalités ou ne dépende pas de comportements spécifiques à la version ultérieure de .NET Framework. Ces fonctionnalités peuvent ne pas être disponibles dans la version antérieure du runtime.

  • ASP.NET utilise des scriptmaps dans IIS pour lier une application à une version du runtime. Les éléments de configuration <supportedRuntime> et <requiredRuntime> ne s'appliquent pas aux applications ASP.NET.

Si la version du runtime utilisée pour générer le composant est installée sur l'ordinateur, vous pouvez également reconfigurer l'application pour qu'elle utilise la version ultérieure du runtime. Comme les versions ultérieures de .NET Framework sont conçues pour offrir une compatibilité descendante, la plupart des fonctionnalités de l'application doivent fonctionner sans modifications. Toutefois, vous devez effectuer des tests approfondis pour être sûr que l'exécution de l'application sous une nouvelle version de .NET Framework n'introduit pas d'erreurs dans votre application.

Retour au début

Exemples de code

Rubriques "Comment" et "Procédure pas à pas"

Retour au début

Référence de Classe

Retour au début

Ressources supplémentaires

Retour au début

Nouveautés

Retour au début

Voir aussi

Référence

Retour au début

Autres ressources

Exécution côte à côte