Déplacement d'une application ASP.NET d'IIS 6.0 vers IIS 7.0
Mise à jour : novembre 2007
Cette rubrique décrit comment déplacer une application Web d'IIS 6.0 vers IIS 7.0. Les applications Web dans IIS 7.0 peuvent être configurées pour le mode classique ou le mode intégré. Le mode classique maintient la compatibilité descendante avec les versions antérieures d'IIS en utilisant une extension ISAPI pour appeler le runtime ASP.NET. Cette option requiert généralement peu de modifications (voire aucune) au niveau des applications existantes.
Le mode intégré d'IIS 7.0 est un pipeline de traitement de demande unifié qui combine le pipeline de demande ASP.NET et le pipeline principal de demande IIS. Le pipeline intégré offre de meilleures performances, une modularité pour la configuration et l'administration, et ajoute la souplesse nécessaire pour étendre IIS avec des modules de code managé. Par exemple, vous pouvez définir un module de code managé dans le dossier App_Code de l'application Web et l'inscrire pour qu'il soit appliqué à toutes les demandes IIS, y compris aux demandes de fichiers statiques.
L'utilisation du mode intégré d'IIS 7.0 peut nécessiter de légères modifications au niveau du fichier Web.config de l'application. D'autres modifications peuvent être requises si l'application utilise un module personnalisé qui implémente l'interface IHttpModule.
Pour une vue d'ensemble du pipeline de traitement de demande en mode intégré dans IIS 7.0, consultez Vue d'ensemble du cycle de vie des applications ASP.NET pour IIS 7.0. Lorsque vous utilisez IIS 7.0, vous pouvez exécuter côte-à-côte des applications en mode classique et en mode intégré sur le même serveur. Le mode classique et le mode intégré prennent tous deux en charge .NET Framework version 2.0 et versions ultérieures. La version 1.1 de .NET Framework est prise en charge uniquement en mode classique. Pour plus d'informations sur la mise à niveau de versions antérieures d'IIS vers IIS 7.0, consultez Upgrading ASP.NET Applications to IIS 7.0 : Differences between IIS 7.0 Integrated Mode and Classic mode.
Remarque : |
---|
Vous pouvez utiliser les informations de cette rubrique pour déplacer des applications Web d'IIS 5.x vers IIS 7.0. Toutefois, d'autres modifications non décrites ici peuvent s'avérer nécessaires. Pour plus d'informations, consultez <externalLink><linkText>Mise à niveau d'ASP.NET 1.1 vers IIS 7 sur Windows Vista et Windows Server 2008</linkText><linkUri></linkUri></externalLink> (en anglais). |
Cette rubrique contient les sections suivantes :
Fichiers Web.config dans IIS 7.0
Déplacement d'une application Web vers le mode classique
Déplacement d'une application Web vers le mode intégré
Fichiers Web.config dans IIS 7.0
Lorsque vous déplacez une application Web ASP.NET vers le mode intégré d'IIS 7.0, vous devez mettre à jour le fichier Web.config. Dans IIS 7.0, des modifications ont été apportées à l'administration des fichiers Web.config et aux types de paramètres pouvant être stockés dans ces fichiers. Les nouveaux paramètres se trouvent dans une nouvelle section de configuration nommée system.webServer.
Dans IIS 6.0, le composant logiciel enfichable MMC ASP.NET fournit des fonctionnalités d'administration connexes à IIS permettant de configurer ASP.NET. Pour plus d'informations, consultez Procédure pas à pas : configuration d'applications ASP.NET dans IIS 6.0 à l'aide de MMC.
Dans IIS 7.0, l'administration d'applications ASP.NET est mieux intégrée à l'administration IIS et ne comporte aucun composant logiciel enfichable séparé. En effet, toute configuration IIS et ASP.NET est réalisée à l'aide du Gestionnaire des services IIS. Les informations de configuration IIS 7.0 étant fonction du système de configuration .NET Framework, le fichier Web.config d'une application qui s'exécute dans IIS 7.0 contient à la fois les paramètres de configuration serveur Web et ASP.NET. Par exemple, dans le fichier Web.config d'une application ASP.NET qui s'exécute dans IIS 7.0, vous pouvez spécifier le fichier par défaut à retourner lorsqu'un navigateur ne demande pas de fichier spécifique. (Dans IIS 6.0 et antérieures, ce paramètre se trouve dans la métabase IIS.)
Modification de fichiers Web.config
Vous pouvez modifier le fichier Web.config d'une application Web qui s'exécute dans IIS 7.0 de l'une des manières suivantes :
En modifiant le fichier Web.config directement, à l'aide de Visual Studio ou de Visual Web Developer, ou à l'aide d'un programme d'édition de texte.
À l'aide du Gestionnaire des services IIS. Pour plus d'informations, consultez Gestionnaire des services IIS.
À l'aide de l'outil Administration de site Web ASP.NET. Pour plus d'informations, consultez Outil Administration de site Web ASP.NET.
Remarque : Les modifications effectuées dans l'outil Administration de site Web n'affectent pas les éléments de configuration enfants de l'élément system.webServer.
À l'aide de l'outil en ligne de commande IIS 7.0 (Appcmd.exe). Cet utilitaire vous permet de spécifier des paramètres de configuration IIS ainsi que des paramètres de configuration d'application Web à la ligne de commande. Pour plus d'informations, consultez IIS 7.0 Command-Line Tool.
Section system.webServer
La section de configuration system.webServer dans le fichier Web.config spécifie des paramètres IIS 7.0 appliqués à l'application Web. La section system.WebServer est un enfant de l'élément de configuration. Pour plus d'informations, consultez IIS 7.0 : system.webServer Section Group (IIS Settings Schema).
Les paramètres de serveur Web que vous pouvez définir dans le groupe de configuration system.WebServer incluent notamment les suivants :
Document par défaut retourné par le serveur Web à un client lorsque la demande n'inclut pas de ressource spécifique (élément defaultDocument).
Paramètres de compression pour les réponses (élément httpCompression).
En-têtes personnalisés (élément customHeaders de la section httpProtocol).
Modules (élément modules).
Gestionnaires (élément handlers).
Certains paramètres s'appliquent uniquement au mode intégré d'IIS 7.0 et ne s'appliquent pas au mode classique. Par exemple, si l'application s'exécute en mode classique, les modules de code managé et les gestionnaires spécifiés dans la section system.WebServer du fichier Web.config sont ignorés. Les modules de code managé et les gestionnaires doivent donc être définis comme dans les versions antérieures d'IIS, à l'aide des éléments httpModules et httpHandlers de la section system.web.
Pour obtenir des exemples d'utilisation de la section de configuration system.webServer, consultez Comment : configurer la section <system.webServer> pour IIS 7.0.
Déplacement d'une application Web vers le mode classique
En général, le déplacement d'une application Web d'IIS 6.0 vers le mode classique d'IIS 7.0 requiert uniquement que vous placiez l'application dans un pool d'applications s'exécutant en mode classique. Par exemple, lorsque vous installez IIS 7.0 avec , le serveur Web est configuré par défaut pour fonctionner en mode intégré. Il est également configuré pour fonctionner sous le pool d'applications par défaut, appelé DefaultAppPool. Pour exécuter une application Web en mode classique, utilisez l'application Classic.NETAppPool ou créez un pool d'applications configuré pour s'exécuter en mode classique. Pour plus d'informations sur la création d'un pool d'applications, consultez Create an Application Pool.
Les modules personnalisés qui implémentent l'interface IHttpModule dans une application exécutée en mode classique sont uniquement informés des demandes de pipeline gérées par le runtime ASP.NET. Ainsi, ils sont informés des demandes de pages .aspx. Le cycle de vie des applications en mode classique est le même que pour ASP.NET dans IIS 6.0. Pour plus d'informations, consultez Vue d'ensemble du cycle de vie des applications ASP.NET pour IIS 5.0 et 6.0.
Si une application s'exécutant en mode classique contient un gestionnaire qui requiert un mappage des scripts pour gérer une extension personnalisée dans IIS, vous devez inscrire ce gestionnaire dans le groupe httpHandler et dans le groupe handler. Pour mapper l'extension de nom de fichier personnalisée à l'extension ISAPI ASP.NET (Aspnet_isapi.dll), spécifiez les attributs modules et scriptProcessor dans l'élément handler. Ces attributs spécifient que le module définissant le gestionnaire est une extension ISAPI et indiquent le chemin d'accès de cette extension. Cette méthode est appliquée par IIS 7.0 en mode classique pour fournir une compatibilité descendante avec les versions antérieures d'IIS. Toutefois, si vous exécutez l'application en mode intégré, vous devez supprimer les attributs modules et scriptProcessor. Pour plus d'informations, consultez Comment : configurer une extension du gestionnaire HTTP dans IIS.
Lorsque vous déplacez une application Web d'IIS 6.0 vers le mode classique, vous n'êtes pas assuré qu'elle fonctionne en mode intégré sans modifications. Si vous basculez une application du mode classique au mode intégré (et modifiez les modules personnalisés et les gestionnaires), des modifications supplémentaires peuvent s'avérer nécessaires pour que l'application s'exécute correctement en mode intégré. La section suivante de cette rubrique explique comment déplacer une application vers le mode intégré d'IIS 7.0.
Déplacement d'une application Web vers le mode intégré
D'une manière générale, les applications Web qui n'incluent ni modules personnalisés ni gestionnaires fonctionneront correctement sans modifications en mode intégré dans IIS 7.0. Les applications Web qui reposent sur des modules personnalisés ou des gestionnaires requièrent les étapes suivantes pour que l'application puisse fonctionner correctement en mode intégré :
Inscrivez les modules personnalisés et les gestionnaires dans la section system.webServer du fichier Web.config à l'aide de l'une des méthodes décrites dans la section Migration d'un fichier Web.config vers le mode intégré, plus loin dans cette rubrique.
Définissez des gestionnaires d'événements pour les événements de pipeline de demande HttpApplication, tels que BeginRequest et EndRequest, uniquement dans la méthode Init du module personnalisé.
Assurez-vous d'avoir pris connaissance de tous les points traités dans la section « Known Differences Between Integrated Mode and Classic Mode » dans Upgrading ASP.NET Applications to IIS 7.0 : Differences between IIS 7.0 Integrated Mode and Classic mode.
Les modules qui implémentent l'interface IHttpModule sont appelés modules de code managé car ils sont générés à l'aide du .NET Framework. Les modules de code managé peuvent être inscrits au niveau du serveur ou au niveau de l'application. Les modules de code natif sont des DLL (code non managé) inscrites uniquement au niveau du serveur. Les principales fonctionnalités ASP.NET, telles que l'état de session et l'authentification par formulaire, sont implémentées en tant que modules managés en mode intégré.
Lorsque vous déplacez une application du mode classique au mode intégré, vous pouvez choisir de conserver ou de supprimer les inscriptions de modules personnalisés et de gestionnaires du mode classique. Si vous ne supprimez pas les inscriptions httpModules et httpHandlers utilisées en mode classique, vous devez affecter à l'attribut validateIntegratedModeConfiguration de l'élément validation la valeur false, afin d'éviter toute erreur. L'élément validation est un élément enfant de l'élément system.webServer. Pour plus d'informations, consultez la section « Disabling the migration error message » dans ASP.NET Integration with IIS 7.0.
Migration d'un fichier Web.config pour une utilisation en mode intégré
Si un module ou un gestionnaire est défini au niveau de l'application, ce module ou gestionnaire n'est pas appelé automatiquement. Cela inclut les modules et les gestionnaires définis dans un assembly dans le dossier Bin ou définis en tant que code source dans le dossier App_Code, et qui ne sont pas inscrits dans la section system.webServer du fichier Web.config. Pour que le module ou le gestionnaire participe au pipeline de demande du mode intégré, vous devez l'inscrire à l'aide de l'une des méthodes suivantes :
Modification du fichier Web.config directement et ajout de l'élément modules ou handlers à l'élément system.webServer. Notez la différence de nom d'élément par rapport au mode classique : modules et non httpModules ; handlers et non httpHandlers.
Utilisation du Gestionnaire des services IIS pour configurer le module ou le gestionnaire. Pour plus d'informations, consultez Configuring Handler Mappings in IIS 7.0 et Configuring Modules in IIS 7.0.
Utilisation de l'outil de ligne de commande IIS 7.0 (Appcmd.exe). Pour plus d'informations, consultez Configure Settings for a Site, Application, Virtual Directory or URL by Using Appcmd.exe.
Classes et propriétés pour le mode intégré
Lorsque vous travaillez dans une application en mode intégré d'IIS 7.0, avec la version 3.0 ou ultérieure de .NET Framework, vous pouvez utiliser les classes et membres suivants (non disponibles en mode classique) :
Propriété SubStatusCode de l'objet HttpResponse, qui vous permet de définir des codes utiles lorsque le traçage de demande ayant échoué est configuré. Pour plus d'informations, consultez Troubleshooting Failed Requests Using Failed Request Tracing in IIS 7.0.
Propriété Headers de l'objet HttpResponse, qui fournit un accès aux en-têtes de réponse.
Propriétés IsPostNotification et CurrentNotification de l'objet HttpContext, utilisées lorsque vous fournissez des gestionnaires pour les événements HttpApplication.
Propriétés Headers et ServerVariables de l'objet HttpRequest, accessibles en écriture.
Voir aussi
Concepts
Exécution d'applications Web sous Windows Vista avec IIS 7.0 et Visual Studio