Soubor web.config
Poznámka:
Toto není nejnovější verze tohoto článku. Aktuální verzi najdete ve verzi .NET 8 tohoto článku.
Upozorňující
Tato verze ASP.NET Core se už nepodporuje. Další informace najdete v tématu .NET a .NET Core Zásady podpory. Aktuální verzi najdete ve verzi .NET 8 tohoto článku.
Důležité
Tyto informace se týkají předběžného vydání produktu, který může být podstatně změněn před komerčním vydáním. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Aktuální verzi najdete ve verzi .NET 8 tohoto článku.
Jedná se web.config
o soubor, který načítá služba IIS, a modul ASP.NET Core pro konfiguraci aplikace hostované ve službě IIS.
Umístění souboru web.config
Aby bylo možné správně nastavit modul ASP.NET Core, musí se soubor web.config
nacházet v cestě ke kořenové složce obsahu (obvykle základní cesta aplikace) nasazené aplikace. Jedná se o stejné umístění jako fyzická cesta k webu poskytnutá službě IIS. Soubor web.config
se musí nacházet v kořenovém adresáři aplikace, aby bylo možné publikovat více aplikací pomocí Nasazení webu.
Citlivé soubory, jako jsou {ASSEMBLY}.runtimeconfig.json
, {ASSEMBLY}.xml
(komentáře k dokumentaci XML) a {ASSEMBLY}.deps.json
, kde zástupný symbol {ASSEMBLY}
představuje název sestavení, se nacházejí ve fyzické cestě k aplikaci. Pokud je k dispozici soubor web.config
a web se normálně spustí, služba IIS neobsluhuje požadavky na tyto citlivé soubory. Pokud soubor web.config
chybí, má nesprávný název nebo nemůže nakonfigurovat web pro normální spuštění, služba IIS může veřejně zobrazovat citlivé soubory.
Soubor web.config
se vždy musí nacházet v nasazení, musí mít správný název a musí být schopný nakonfigurovat web pro normální spuštění. Nikdy neodebírejte soubor web.config
z produkčního nasazení.
Pokud v projektu není k dispozici soubor web.config
, vytvoří se s použitím správných parametrů processPath
a arguments
pro konfiguraci modulu ASP.NET Core a přesune se do publikovaného výstupu.
Pokud v projektu je k dispozici soubor web.config
, transformuje se s použitím správných parametrů processPath
a arguments
pro konfiguraci modulu ASP.NET Core a přesune se do publikovaného výstupu. Transformace nezmění nastavení konfigurace služby IIS v souboru.
Soubor web.config
může obsahovat další nastavení konfigurace služby IIS, které řídí aktivní moduly služby IIS. Informace o modulech služby IIS, které jsou schopné zpracovávat požadavky v aplikacích ASP.NET Core, najdete v tématu Moduly služby IIS.
Vytvoření, transformaci a publikování souboru web.config
při publikování projektu zajišťuje cíl nástroje MSBuild (_TransformWebConfig
). Tento cíl je k dispozici v cílech sady Web SDK (Microsoft.NET.Sdk.Web
). Sada SDK se nastavuje na začátku souboru projektu:
<Project Sdk="Microsoft.NET.Sdk.Web">
Pokud chcete sadě Web SDK zabránit v transformaci souboru web.config
, použijte v souboru projektu vlastnost <IsTransformWebConfigDisabled>
:
<PropertyGroup>
<IsTransformWebConfigDisabled>true</IsTransformWebConfigDisabled>
</PropertyGroup>
Pokud se sadě Web SDK zakáže transformace tohoto souboru, musí parametry processPath
a arguments
ručně nastavit vývojář. Další informace najdete v tématu Modul ASP.NET Core (ANCM) pro službu IIS.
Konfigurace základního modulu ASP.NET s využitím web.config
Základní modul ASP.NET je nakonfigurovaný s aspNetCore
částí system.webServer
uzlu v souboru lokality web.config
.
Následující web.config
soubor se publikuje pro nasazení závislé na rozhraní a nakonfiguruje modul ASP.NET Core pro zpracování požadavků lokality:
<?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>
Následující web.config
informace se publikuje pro samostatné nasazení:
<?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>
Vlastnost InheritInChildApplications je nastavena tak, aby false
indikovala, že nastavení zadaná v rámci <location>
elementu nejsou zděděna aplikacemi, které se nacházejí v podadresáři aplikace.
Když je aplikace nasazená do služby Aplikace Azure Service, je cesta nastavená stdoutLogFile
na \\?\%home%\LogFiles\stdout
. Cesta ukládá protokoly stdout do LogFiles
složky, což je umístění automaticky vytvořené službou.
Informace o konfiguraci dílčí aplikace služby IIS naleznete v části Pokročilá konfigurace.
Atributy elementu aspNetCore
Atribut | Popis | Výchozí |
---|---|---|
arguments |
Volitelný atribut řetězce. Argumenty spustitelnému souboru zadanému v |
|
disableStartUpErrorPage |
Volitelný logický atribut. Pokud je pravda, stránka 502.5 - Selhání procesu je potlačena a stránka stavového kódu 502 nakonfigurovaná v |
false |
forwardWindowsAuthToken |
Volitelný logický atribut. Pokud je hodnota true, token se předá do podřízeného procesu, který |
true |
hostingModel |
Volitelný atribut řetězce. Určuje model hostování jako in-process ( |
OutOfProcess /outofprocess pokud není k dispozici |
processesPerApplication |
Volitelný celočíselnou atribut. Určuje počet instancí procesu zadaných v †Na hostování v procesu je hodnota omezena na Nastavení |
Výchozí: 1 Min: 1 Max: 100 † |
processPath |
Povinný atribut řetězce. Cesta ke spustitelnému souboru, který spouští proces, který naslouchá požadavkům HTTP. Podporují se relativní cesty. Pokud cesta začíná |
|
rapidFailsPerMinute |
Volitelný celočíselnou atribut. Určuje počet povolených chybových ukončení procesu Nepodporuje se hostování v procesu. |
Výchozí: 10 Min: 0 Max: 100 |
requestTimeout |
Volitelný atribut časového rozsahu Určuje dobu, po kterou ASP.NET základní modul čeká na odpověď z procesu, na kterém naslouchá %ASPNETCORE_PORT%. Ve verzích modulu ASP.NET Core, který se dodává s vydáním verze ASP.NET Core 2.1 nebo novější, Nevztahuje se na hostování v procesu. V případě hostování v procesu modul čeká, až aplikace zpracuje požadavek. Platné hodnoty pro minuty a sekundy řetězce jsou v rozsahu 0–59. Výsledkem použití |
Výchozí: 00:02:00 Min: 00:00:00 Max: 360:00:00 |
shutdownTimeLimit |
Volitelný celočíselnou atribut. Doba trvání v sekundách, po kterou modul čeká na řádné vypnutí spustitelného |
Výchozí: 10 Min: 0 Max: 600 |
startupTimeLimit |
Volitelný celočíselnou atribut. Doba trvání v sekundách, po kterou modul čeká, než spustitelný soubor spustí proces, který naslouchá na portu. Pokud tento časový limit překročíte, modul proces ukončí. Při hostování v procesu: Proces se nerestartuje a toto nastavení nepoužívá Při hostování out-of-process: Modul se pokusí znovu spustit proces, když obdrží nový požadavek, a pokračuje v pokusu o restartování procesu u následných příchozích požadavků, pokud se aplikaci nepodaří spustit Hodnota 0 (nula) se nepovažuje za nekonečný časový limit. |
Výchozí: 120 Min: 0 Max: 3600 |
stdoutLogEnabled |
Volitelný logický atribut. Pokud je hodnota true, |
false |
stdoutLogFile |
Volitelný atribut řetězce. Určuje relativní nebo absolutní cestu k souboru, pro kterou |
aspnetcore-stdout |
Nastavení proměnných prostředí
Proměnné prostředí lze zadat pro proces v atributu processPath
. Zadejte proměnnou prostředí s <environmentVariable>
podřízeným prvkem <environmentVariables>
elementu kolekce. Proměnné prostředí nastavené v této části mají přednost před proměnnými systémového prostředí.
Následující příklad nastaví dvě proměnné prostředí v web.config
. ASPNETCORE_ENVIRONMENT
nakonfiguruje prostředí aplikace na Development
. Vývojář může dočasně nastavit tuto hodnotu v web.config
souboru, aby se při ladění výjimky aplikace načetla stránka výjimky vývojáře. CONFIG_DIR
je příkladem uživatelem definované proměnné prostředí, kde vývojář napsal kód, který čte hodnotu při spuštění, aby vytvořil cestu pro načtení konfiguračního souboru aplikace.
<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>
Poznámka:
Alternativou k nastavení prostředí přímo v web.config
je zahrnutí <EnvironmentName>
vlastnosti do profilu publikování (.pubxml
) nebo souboru projektu. Tento přístup nastaví prostředí při web.config
publikování projektu:
<PropertyGroup>
<EnvironmentName>Development</EnvironmentName>
</PropertyGroup>
Upozorňující
Proměnnou ASPNETCORE_ENVIRONMENT
prostředí nastavte jenom na Development
přípravných a testovacích serverech, které nejsou přístupné nedůvěryhodným sítím, jako je například internet.
Konfigurace služby IIS s využitím web.config
Konfigurace služby IIS je ovlivněna <system.webServer>
částí web.config
scénářů služby IIS, které jsou funkční pro aplikace ASP.NET Core s modulem ASP.NET Core. Konfigurace služby IIS je například funkční pro dynamickou kompresi. Pokud je služba IIS nakonfigurovaná na úrovni serveru tak, aby používala dynamickou kompresi, <urlCompression>
může prvek v souboru aplikace web.config
zakázat pro aplikaci ASP.NET Core.
Další informace naleznete v následujících tématech:
- Referenční informace o konfiguraci pro
<system.webServer>
- Modul ASP.NET Core (ANCM) pro službu IIS
- Moduly služby IIS s ASP.NET Core
Pokud chcete nastavit proměnné prostředí pro jednotlivé aplikace spuštěné v izolovaných fondech aplikací (podporované pro IIS 10.0 nebo novější), přečtěte si AppCmd.exe
část příkazu tématu Proměnné <environmentVariables>
prostředí v referenční dokumentaci ke službě IIS.
Oddíly konfigurace web.config
Oddíly konfigurace aplikací ASP.NET 4.x v web.config
ASP.NET Core pro konfiguraci nepoužívají:
<system.web>
<appSettings>
<connectionStrings>
<location>
Aplikace ASP.NET Core se konfigurují pomocí jiných poskytovatelů konfigurace. Další informace najdete v tématu Konfigurace.
Transformace souboru web.config
Pokud potřebujete při publikování transformovat soubor web.config
, projděte si téma Transformace souboru web.config. Soubor web.config
může být potřeba transformovat při publikování kvůli nastavení proměnných prostředí na základě konfigurace, profilu nebo prostředí.