File 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 i criteri di supporto di .NET e .NET Core. Per la versione corrente, vedere la versione .NET 9 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.
web.config
è un file letto da IIS e dal modulo ASP.NET Core per configurare un'app ospitata con IIS.
Posizione del file web.config
Per configurare correttamente il modulo ASP.NET Core, il file web.config
deve essere presente nel percorso radice del contenuto (in genere il percorso base dell'app) dell'app distribuita. Corrisponde al percorso fisico del sito Web fornito a IIS. Il file web.config
deve essere presente nella radice dell'app per abilitare la pubblicazione di più app mediante Distribuzione Web.
I file sensibili si trovano nel percorso fisico dell'app, ad esempio {ASSEMBLY}.runtimeconfig.json
, {ASSEMBLY}.xml
(commenti della documentazione XML) e {ASSEMBLY}.deps.json
dove il segnaposto {ASSEMBLY}
è il nome dell'assembly. Quando il file web.config
è presente e il sito viene avviato normalmente, IIS non rende disponibili questi file sensibili se vengono richiesti. Se il file web.config
non è presente, ha un nome non corretto o non è in grado di configurare il sito per l'avvio normale, IIS potrebbe rendere disponibili pubblicamente i file sensibili.
Il file web.config
deve essere sempre presente nella distribuzione, deve essere denominato correttamente ed essere in grado di configurare il sito per l'avvio normale. Non rimuovere mai il file web.config
da una distribuzione in produzione.
Se nel progetto non è presente un file web.config
, il file viene creato con processPath
e arguments
corretti per la configurazione del modulo ASP.NET Core. Il file viene quindi spostato nell'output pubblicato.
Se nel progetto è presente un file web.config
, il file viene trasformato con processPath
e arguments
corretti per la configurazione del modulo ASP.NET Core e spostato nell'output pubblicato. La trasformazione non modifica le impostazioni di configurazione di IIS incluse nel file.
Il file web.config
può fornire ulteriori impostazioni di configurazione di IIS che controllano i moduli IIS attivi. Per informazioni sui moduli IIS in grado di elaborare le richieste con le app di ASP.NET Core, vedere l'argomento Moduli IIS.
La creazione, la trasformazione e la pubblicazione del file web.config
sono operazioni gestite da una destinazione MSBuild (_TransformWebConfig
) quando viene pubblicato il progetto. Questa destinazione si trova tra le destinazioni Web SDK (Microsoft.NET.Sdk.Web
). L'SDK è impostato all'inizio del file di progetto:
<Project Sdk="Microsoft.NET.Sdk.Web">
Per impedire che Web SDK trasformi il file web.config
, usare la proprietà <IsTransformWebConfigDisabled>
nel file di progetto:
<PropertyGroup>
<IsTransformWebConfigDisabled>true</IsTransformWebConfigDisabled>
</PropertyGroup>
Quando si disabilita la trasformazione del file in Web SDK, processPath
e arguments
devono essere impostati manualmente dallo sviluppatore. Per altre informazioni, vedere Modulo ASP.NET Core (ANCM) per IIS.
Configurazione del modulo core di ASP.NET con web.config
Il modulo principale ASP.NET è configurato con la aspNetCore
sezione del system.webServer
nodo nel file del web.config
sito.
Il file seguente web.config
viene pubblicato per una distribuzione dipendente dal framework e configura il modulo ASP.NET Core per gestire le richieste del sito:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet"
arguments=".\MyApp.dll"
stdoutLogEnabled="false"
stdoutLogFile=".\logs\stdout"
hostingModel="inprocess" />
</system.webServer>
</location>
</configuration>
Di seguito web.config
viene pubblicato per una distribuzione autonoma:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath=".\MyApp.exe"
stdoutLogEnabled="false"
stdoutLogFile=".\logs\stdout"
hostingModel="inprocess" />
</system.webServer>
</location>
</configuration>
La InheritInChildApplications proprietà è impostata su false
per indicare che le impostazioni specificate all'interno dell'elemento <location>
non vengono ereditate dalle app che risiedono in una sottodirectory dell'app.
Quando un'app viene distribuita in Servizio app di Azure, il percorso stdoutLogFile
è impostato su \\?\%home%\LogFiles\stdout
. Il percorso salva i log stdout nella LogFiles
cartella , ovvero un percorso creato automaticamente dal servizio.
Per informazioni sulla configurazione della sotto-applicazione IIS, vedere Configurazione avanzata.
Attributi dell'elemento aspNetCore
Attributo | Descrizione | Default |
---|---|---|
arguments |
Attributo stringa facoltativo. Argomenti per l'eseguibile specificato in |
|
disableStartUpErrorPage |
Attributo booleano facoltativo. Se true, la pagina 502.5 - Errore del processo viene eliminata e la tabella codici di stato 502 configurata in ha la |
false |
forwardWindowsAuthToken |
Attributo booleano facoltativo. Se true, il token viene inoltrato al processo figlio in |
true |
hostingModel |
Attributo stringa facoltativo. Specifica il modello di hosting in-process ( |
OutOfProcess /outofprocess quando non è presente |
processesPerApplication |
Attributo Integer facoltativo. Specifica il numero di istanze del processo specificato nell'impostazione †For hosting in-process, il valore è limitato a L'impostazione di |
Impostazione predefinita: 1 Min: 1 Max: 100 † |
processPath |
Attributo stringa obbligatorio. Percorso del file eseguibile che avvia un processo in ascolto delle richieste HTTP. I percorsi relativi sono supportati. Se il percorso inizia con |
|
rapidFailsPerMinute |
Attributo Integer facoltativo. Specifica il numero di volte in cui il processo specificato in Non supportato con l'hosting in-process. |
Impostazione predefinita: 10 Min: 0 Max: 100 |
requestTimeout |
Attributo Timespan facoltativo. Specifica la durata per cui il modulo ASP.NET Core attende una risposta dal processo in ascolto su %ASPNETCORE_PORT%. Nelle versioni del modulo ASP.NET Core fornito con ASP.NET Core 2.1 o versioni successive, Non è applicabile all'hosting in-process. Per l'hosting in-process, il modulo resta in attesa che l'app elabori la richiesta. I valori validi per i segmenti della stringa relativi a minuti e secondi sono compresi nell'intervallo tra 0 e 59. L'utilizzo di |
Impostazione predefinita: 00:02:00 Min: 00:00:00 Max: 360:00:00 |
shutdownTimeLimit |
Attributo Integer facoltativo. Durata in secondi in cui il modulo attende l'arresto normale dell'eseguibile quando viene rilevato il |
Impostazione predefinita: 10 Min: 0 Max: 600 |
startupTimeLimit |
Attributo Integer facoltativo. Durata in secondi per cui il modulo attende l'avvio di un processo in ascolto sulla porta da parte del file eseguibile. Se questo limite di tempo viene superato, il modulo termina il processo. Durante l'hosting in-process: il processo non viene riavviato e non usa l'impostazione Durante l'hosting out-of-process: il modulo tenta di riavviare il processo quando riceve una nuova richiesta e continua a tentare di riavviare il processo nelle richieste in ingresso successive, a meno che l'app non riesca a avviare Un valore pari a 0 (zero) non è considerato un timeout infinito. |
Impostazione predefinita: 120 Min: 0 Max: 3600 |
stdoutLogEnabled |
Attributo booleano facoltativo. Se true, |
false |
stdoutLogFile |
Attributo stringa facoltativo. Specifica il percorso di file relativo o assoluto per il quale |
aspnetcore-stdout |
Impostare le variabili di ambiente
È possibile specificare le variabili di ambiente per il processo nell'attributo processPath
. Specificare una variabile di ambiente con l'elemento figlio <environmentVariable>
di un elemento della raccolta <environmentVariables>
. Le variabili di ambiente impostate in questa sezione hanno la precedenza sulle variabili di ambiente di sistema.
Nell'esempio seguente vengono impostate due variabili di ambiente in web.config
. ASPNETCORE_ENVIRONMENT
configura l'ambiente dell'app su Development
. Uno sviluppatore può impostare temporaneamente questo valore nel web.config
file per forzare il caricamento della pagina eccezioni per sviluppatori durante il debug di un'eccezione dell'app. CONFIG_DIR
è un esempio di variabile di ambiente definita dall'utente, in cui lo sviluppatore ha scritto il codice che legge il valore all'avvio in modo da formare un percorso per il caricamento del file di configurazione dell'app.
<aspNetCore processPath="dotnet"
arguments=".\MyApp.dll"
stdoutLogEnabled="false"
stdoutLogFile=".\logs\stdout"
hostingModel="inprocess">
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
<environmentVariable name="CONFIG_DIR" value="f:\application_config" />
</environmentVariables>
</aspNetCore>
Nota
Un'alternativa all'impostazione diretta dell'ambiente in web.config
consiste nell'includere la <EnvironmentName>
proprietà nel profilo di pubblicazione (.pubxml
) o nel file di progetto. Questo approccio imposta l'ambiente in web.config
quando il progetto viene pubblicato:
<PropertyGroup>
<EnvironmentName>Development</EnvironmentName>
</PropertyGroup>
Avviso
Impostare la variabile di ambiente ASPNETCORE_ENVIRONMENT
su Development
solo in server di gestione temporanea e test che non sono accessibili da reti non attendibili, ad esempio Internet.
Configurazione di IIS con web.config
La <system.webServer>
configurazione iis è influenzata dalla sezione di web.config
per gli scenari IIS funzionali per le app ASP.NET Core con il modulo ASP.NET Core. Ad esempio, la configurazione di IIS è funzionale per la compressione dinamica. Se IIS è configurato a livello di server per l'uso della compressione dinamica, l'elemento <urlCompression>
nel file dell'app web.config
può disabilitarlo per un'app ASP.NET Core.
Per ulteriori informazioni, vedi gli argomenti seguenti:
- Informazioni di riferimento sulla configurazione per
<system.webServer>
- Modulo ASP.NET Core (ANCM) per IIS
- Moduli IIS con ASP.NET Core
Per impostare le variabili di ambiente per le singole app in esecuzione in pool di app isolate (supportato per IIS 10.0 o versione successiva), vedere la sezione relativa al AppCmd.exe
comando dell'argomento Variabili <environmentVariables>
di ambiente nella documentazione di riferimento di IIS.
Sezioni di configurazione di web.config
Le sezioni di configurazione di ASP.NET app 4.x in web.config
non vengono usate dalle app ASP.NET Core per la configurazione:
<system.web>
<appSettings>
<connectionStrings>
<location>
Le applicazioni ASP.NET Core vengono configurate tramite altri provider di configurazione. Per altre informazioni, vedere Configurazione.
Trasformare web.config
Se è necessario trasformare web.config
in fase di pubblicazione, vedere Trasformare web.config. Potrebbe essere necessario trasformare web.config
durante la pubblicazione per impostare le variabili di ambiente in base alla configurazione, al profilo o all'ambiente.