Utiliser plusieurs web.config dans un projet web asp.net sous visual studio 2010

 01/01/2019 |   Admin |  C#


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)"

4) Pour publier le site, il suffit de choisir le mode de configuration à mettre en place.