Utiliser plusieurs web.config dans un projet web asp.net sous visual studio 2010
1) Créer les 3 configurations suivantes si elles n’existent pas
a. Debug : Par défaut, utilisé sur le poste local du développeur
b. Deploy : utilisé pour le serveur de développement
c. Release : utilisé pour le serveur de production
Pour ajouter une nouvelle configuration, aller dans le gestionnaire de configuration (ci-dessus)
Cliquer sur nouveau puis saisir le nom de la nouvelle configuration (ex : Deploy , copier les paramètres à partir de release)
2) Une fois les 3 configurations crées il suffit de faire un clique droit sur le fichier web.config puis « Ajouter des transformations de configuration » (Si les fichiers n’ont pas déjà été créés)
3) Modifier les fichiers suivant vos besoins
Exemple : Le cas ou le IIS du serveur de développement est différent du poste du développeur. Il faut déplacer les modules et les handlers.
La section <System.web> du fichier web.config :
<system.web> <pages theme="Defaut"> <controls> <add tagPrefix="…" namespace="…" assembly="…"/> </controls> </pages> <httpModules> <add name="…" type="…, …"/> </httpModules> <httpHandlers> <add verb="*" path="*.aspx" type="…"/> <add verb="*" path="*.asmx" type="…"/> </httpHandlers> <compilation debug="true" targetFramework="4.0"> </compilation> </system.web> <system.webServer> </system.webServer>
La même section dans le fichier Web.Deploy.config :
<?xml version="1.0"?> <configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> <system.web xdt:Transform="Replace"> <pages theme="Defaut"> <controls> <add tagPrefix="…" namespace="…" assembly="…"/> </controls> </pages> <compilation xdt:Transform="RemoveAttributes(debug)" /> </system.web> <system.webServer xdt:Transform="Replace"> <validation validateIntegratedModeConfiguration="false"/> <modules> <add name="…" type="…, …"/> </modules> <handlers> <add name="…" verb="*" path="*.aspx" type="…, …"/> <add name="…" verb="*" path="….ashx" type="…, …"/> </handlers> </system.webServer> </configuration>
Pour remplacer toute une section il faut ajouter l’élément xdt:Transform="Replace"
Pour supprimer un attribut il faut rajouter xdt:Transform="RemoveAttributes(l’attribut à supprimer)"