Soubor web.config

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 processPath.

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 web.config prioritě.

false
forwardWindowsAuthToken

Volitelný logický atribut.

Pokud je hodnota true, token se předá do podřízeného procesu, který %ASPNETCORE_PORT% naslouchá jako hlavička MS-ASPNETCORE-WINAUTHTOKEN na požadavek. Za volání CloseHandle na tento token na žádost zodpovídá tento proces.

true
hostingModel

Volitelný atribut řetězce.

Určuje model hostování jako in-process (InProcess/inprocess) nebo out-of-process ().OutOfProcess/outofprocess

OutOfProcess/outofprocess pokud není k dispozici
processesPerApplication

Volitelný celočíselnou atribut.

Určuje počet instancí procesu zadaných v processPath nastavení, které se dá pro každou aplikaci spustit.

†Na hostování v procesu je hodnota omezena na 1.

Nastavení processesPerApplication se nedoporučuje. Tento atribut bude odebrán v budoucí verzi.

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á ., cesta se považuje za relativní vzhledem ke kořenovému adresáři webu.

rapidFailsPerMinute

Volitelný celočíselnou atribut.

Určuje počet povolených chybových ukončení procesu processPath za minutu. Pokud tento limit překročíte, modul po zbytek minuty zastaví spuštění 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ší, requestTimeout se zadává v hodinách, minutách a sekundách.

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í 60 hodnoty pro minuty nebo sekundy je chyba 500 – Vnitřní chyba serveru.

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 app_offline.htm souboru při zjištění souboru.

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á rapidFailsPerMinute .

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 rapidFailsPerMinute početkrát za poslední klouzavý minutu.

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, stdout a stderr pro proces zadaný v processPath jsou přesměrovány do souboru zadaného v stdoutLogFile.

false
stdoutLogFile

Volitelný atribut řetězce.

Určuje relativní nebo absolutní cestu k souboru, pro kterou stdout a stderr z procesu zadaného v processPath protokolu. Relativní cesty jsou relativní vzhledem ke kořenovému adresáři webu. Každá cesta začínající . na kořen webu je relativní a všechny ostatní cesty se považují za absolutní cesty. Všechny složky zadané v cestě vytvoří modul při vytvoření souboru protokolu. Použití oddělovačů podtržítka, časového razítka, ID procesu a přípony souboru (.log) se přidají do posledního stdoutLogFile segmentu cesty. Pokud .\logs\stdout je zadán jako hodnota, příklad protokolu stdout je uložen jako stdout_20180205194132_1934.log ve logs složce při uložení 5. února 2018 v 19:41:32 s ID procesu 1934.

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:

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í.

Další prostředky