Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
File
Nota
Questa non è la versione più recente di questo articolo. Per la versione corrente, vedere la versione .NET 10 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 10 di questo articolo.
Il web.config è un file letto da IIS e ASP.NET Core Module 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 web.config file è mancante, denominato in modo non corretto o non è in grado di configurare il sito per l'avvio normale, IIS potrebbe gestire 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 web.config file potrebbe fornire impostazioni di configurazione IIS aggiuntive che controllano i moduli IIS attivi. Per informazioni sui moduli IIS in grado di elaborare le richieste con app ASP.NET Core, vedere l'articolo moduli IIS.
Una destinazione MSBuild (_TransformWebConfig) gestisce la creazione, la trasformazione e la pubblicazione del web.config file quando il progetto viene pubblicato. 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 Web SDK evitando la trasformazione del file, lo sviluppatore deve impostare manualmente processPath e arguments. Per altre informazioni, vedere Modulo ASP.NET Core (ANCM) per IIS.
Configurazione del modulo core di ASP.NET con web.config
Il Modulo ASP.NET Core è configurato nella sezione aspNetCore del nodo system.webServer del file del sito web.config.
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 | Predefinito |
|---|---|---|
arguments |
Attributo di tipo stringa facoltativo. Argomenti per l'eseguibile specificato in |
|
disableStartUpErrorPage |
Attributo booleano facoltativo. Se vero, la pagina Errore del processo 502.5 viene soppressa e la pagina del codice di stato 502 configurata in |
false |
forwardWindowsAuthToken |
Attributo booleano facoltativo. Se vero, il token viene inoltrato al processo figlio che ascolta su |
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: 1Minimo: 1Max: 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: 10Minimo: 0Massimo: 100 |
requestTimeout |
Attributo facoltativo dell'intervallo di tempo. 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 si applica all'hosting in esecuzione. 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:00Minimo: 00:00:00Massimo: 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: 10Minimo: 0Massimo: 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 utilizza 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: 120Minimo: 0Massimo: 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 potrebbe 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
Configurazione IIS è influenzata dalla sezione di web.config per gli scenari IIS utilizzati in 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 altre informazioni, vedere gli articoli 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 AppCmd.exe sezione relativa al comando dell'articolo 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.
Trasformazione di 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.