Partager via


Transformer web.config

Remarque

Ceci n’est pas la dernière version de cet article. Pour la version actuelle, consultez la version .NET 8 de cet article.

Avertissement

Cette version d’ASP.NET Core n’est plus prise en charge. Pour plus d’informations, consultez la Stratégie de prise en charge de .NET et .NET Core. Pour la version actuelle, consultez la version .NET 8 de cet article.

Important

Ces informations portent sur la préversion du produit, qui est susceptible d’être en grande partie modifié avant sa commercialisation. Microsoft n’offre aucune garantie, expresse ou implicite, concernant les informations fournies ici.

Pour la version actuelle, consultez la version .NET 8 de cet article.

Par Vijay Ramakrishnan

Les transformations du fichier web.config peuvent être appliquées automatiquement lorsqu’une application est publiée en fonction de :

Ces transformations se produisent pour l’un des scénarios de génération web.config suivants :

  • Généré automatiquement par le SDK Microsoft.NET.Sdk.Web.
  • Fourni par le développeur dans la racine de contenu de l’application.

Configuration de build

Les transformations de la configuration de build sont exécutées en premier.

Incluez un fichier web.{CONFIGURATION}.config pour chaque configuration de build (Déboguer|Mettre en production) nécessitant une transformation web.config.

Dans l’exemple suivant, une variable d’environnement propre à la configuration est définie dans web.Release.config :

<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <location>
    <system.webServer>
      <aspNetCore>
        <environmentVariables xdt:Transform="InsertIfMissing">
          <environmentVariable name="Configuration_Specific" 
                               value="Configuration_Specific_Value" 
                               xdt:Locator="Match(name)" 
                               xdt:Transform="InsertIfMissing" />
        </environmentVariables>
      </aspNetCore>
    </system.webServer>
  </location>
</configuration>

La transformation est appliquée lorsque la configuration est définie sur Version :

dotnet publish --configuration Release

La propriété MSBuild pour la configuration est $(Configuration).

Profil

Les transformations du profil sont exécutées ensuite, après les transformations de la configuration de build.

Incluez un fichier web.{PROFILE}.config pour chaque configuration de profil nécessitant une transformation web.config.

Dans l’exemple suivant, une variable d’environnement propre au profil est définie dans web.FolderProfile.config pour un profil de publication de dossier :

<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <location>
    <system.webServer>
      <aspNetCore>
        <environmentVariables xdt:Transform="InsertIfMissing">
          <environmentVariable name="Profile_Specific" 
                               value="Profile_Specific_Value" 
                               xdt:Locator="Match(name)" 
                               xdt:Transform="InsertIfMissing" />
        </environmentVariables>
      </aspNetCore>
    </system.webServer>
  </location>
</configuration>

La transformation est appliquée lorsque le profil est FolderProfile :

dotnet publish --configuration Release /p:PublishProfile=FolderProfile

La propriété MSBuild pour le nom du profil est $(PublishProfile).

Si aucun profil n’est passé, le nom du profil par défaut est FileSystem et web. FileSystem.config est appliqué si le fichier est présent dans la racine du contenu de l’application.

Environnement

Les transformations de l’environnement sont exécutées en troisième place, après les transformations de la configuration de build et du profil.

Incluez un fichier web.{ENVIRONMENT}.config pour chaque environnement nécessitant une transformation web.config.

Dans l’exemple suivant, une variable d’environnement propre à l’environnement est définie dans web.Production.config pour l’environnement de production :

<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <location>
    <system.webServer>
      <aspNetCore>
        <environmentVariables xdt:Transform="InsertIfMissing">
          <environmentVariable name="Environment_Specific" 
                               value="Environment_Specific_Value" 
                               xdt:Locator="Match(name)" 
                               xdt:Transform="InsertIfMissing" />
        </environmentVariables>
      </aspNetCore>
    </system.webServer>
  </location>
</configuration>

La transformation est appliquée lorsque l’environnement est Production :

dotnet publish --configuration Release /p:EnvironmentName=Production

La propriété MSBuild pour l’environnement est $(EnvironmentName).

Lorsque vous publiez à partir de Visual Studio et utilisez un profil de publication, consultez Profils de publication Visual Studio (.pubxml) pour le déploiement d’applications ASP.NET Core.

La variable d’environnement ASPNETCORE_ENVIRONMENT est automatiquement ajoutée au fichier web.config lorsque le nom de l’environnement est spécifié.

Custom

Les transformations personnalisées sont exécutées en dernier, après les transformations de la configuration de build, du profil et de l’environnement.

Incluez un fichier {CUSTOM_NAME}.transform pour chaque configuration personnalisée nécessitant une transformation web.config.

Dans l’exemple suivant, une variable d’environnement de transformation personnalisée est définie dans custom.transform :

<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <location>
    <system.webServer>
      <aspNetCore>
        <environmentVariables xdt:Transform="InsertIfMissing">
          <environmentVariable name="Custom_Specific" 
                               value="Custom_Specific_Value" 
                               xdt:Locator="Match(name)" 
                               xdt:Transform="InsertIfMissing" />
        </environmentVariables>
      </aspNetCore>
    </system.webServer>
  </location>
</configuration>

La transformation est appliquée lorsque la propriété CustomTransformFileName est passée à la commande dotnet publish :

dotnet publish --configuration Release /p:CustomTransformFileName=custom.transform

La propriété MSBuild pour le nom du profil est $(CustomTransformFileName).

Empêcher la transformation web.config

Pour empêcher les transformations du fichier web.config, définissez la propriété MSBuild $(IsWebConfigTransformDisabled) :

dotnet publish /p:IsWebConfigTransformDisabled=true

Ressources supplémentaires