Trasformare web.config
Nota
Questa non è la versione più recente di questo articolo. Per la versione corrente, vedere la versione .NET 9 di questo articolo.
Avviso
Questa versione di ASP.NET Core non è più supportata. Per altre informazioni, vedere Criteri di supporto di .NET e .NET Core. Per la versione corrente, vedere la versione .NET 8 di questo articolo.
Importante
Queste informazioni si riferiscono a un prodotto non definitive che può essere modificato in modo sostanziale prima che venga rilasciato commercialmente. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Per la versione corrente, vedere la versione .NET 9 di questo articolo.
Le trasformazioni per il file web.config possono essere applicate automaticamente quando viene pubblicata un'app in base a:
Queste trasformazioni si verificano per uno degli scenari di generazione di web.config seguenti:
- Generati automaticamente dall'SDK
Microsoft.NET.Sdk.Web
. - Fornito dallo sviluppatore nella radice del contenuto dell'app.
Configurazione della build
Le trasformazioni di configurazione della build vengono eseguite per prime.
Includere un file web.{CONFIGURAZIONE}.config per ogni configurazione della build (Debug|Versione) che richiede una trasformazione di web.config.
Nell'esempio seguente, una variabile di ambiente specifica della configurazione viene impostata in 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 trasformazione viene applicata quando la configurazione è impostata su Versione:
dotnet publish --configuration Release
La proprietà di MSBuild per la configurazione è $(Configuration)
.
Profilo
Le trasformazioni di profilo vengono eseguite per seconde, dopo le trasformazioni di configurazione della build.
Includere un file web.{PROFILO}.config per ogni configurazione del profilo che richiede una trasformazione di web.config.
Nell'esempio seguente, una variabile di ambiente per il profilo è impostata in web.FolderProfile.config per un profilo di pubblicazione di cartella:
<?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 trasformazione viene applicata quando il profilo è FolderProfile:
dotnet publish --configuration Release /p:PublishProfile=FolderProfile
La proprietà di MSBuild per il nome del profilo è $(PublishProfile)
.
Se non viene passato alcun profilo, il nome del profilo predefinito è FileSystem e viene applicato web.FileSystem.config se il file è presente nella radice del contenuto dell'app.
Ambiente
Le trasformazioni di ambiente vengono eseguite per terze, dopo le trasformazioni di configurazione della build e di profilo.
Includere un file web.{AMBIENTE}.config per ogni ambiente che richiede una trasformazione di web.config.
Nell'esempio seguente viene impostata una variabile di ambiente specifica dell'ambiente nel Web. Production.config per l'ambiente di produzione:
<?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 trasformazione viene applicata quando l'ambiente è Production:
dotnet publish --configuration Release /p:EnvironmentName=Production
La proprietà di MSBuild per l'ambiente è $(EnvironmentName)
.
Quando si pubblica da Visual Studio e si usa un profilo di pubblicazione, vedere Profili di pubblicazione di Visual Studio (con estensione pubxml) per la distribuzione di app ASP.NET Core.
La variabile di ambiente ASPNETCORE_ENVIRONMENT
viene aggiunta automaticamente al file Web.config quando viene specificato il nome dell'ambiente.
Personalizzazione
Le trasformazioni personalizzate vengono eseguite per ultime, dopo le trasformazioni di configurazione della build, di profilo e di ambiente.
Includere un file {NOME_PERSONALIZZATO}.transform per ogni configurazione personalizzata che richiede una trasformazione di web.config.
Nell'esempio seguente viene impostata una variabile di ambiente per una trasformazione personalizzata in 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 trasformazione viene applicata al passaggio della proprietà CustomTransformFileName
al comando dotnet publish:
dotnet publish --configuration Release /p:CustomTransformFileName=custom.transform
La proprietà di MSBuild per il nome del profilo è $(CustomTransformFileName)
.
Impedire trasformazioni di web.config
Per impedire le trasformazioni del file web.config, impostare la proprietà MSBuild $(IsWebConfigTransformDisabled)
:
dotnet publish /p:IsWebConfigTransformDisabled=true