Sdílet prostřednictvím


Pokročilá konfigurace základního modulu ASP.NET a služby IIS

Note

Toto není nejnovější verze tohoto článku. Aktuální verzi najdete ve verzi .NET 10 tohoto článku.

Warning

Tato verze ASP.NET Core se už nepodporuje. Další informace najdete v zásadách podpory .NET a .NET Core. Aktuální verzi najdete v tomto článku ve verzi .NET 9.

Tento článek popisuje pokročilé možnosti konfigurace a scénáře pro modul ASP.NET Core a IIS.

Úprava velikosti zásobníku

Platí pouze při použití modelu hostování v procesu.

Nakonfigurujte velikost spravovaného zásobníku pomocí nastavení stackSize v šestnáctkových bajtech v souboru web.config. Výchozí velikost je 0x100000 bajtů (1 MB). Následující příklad změní velikost zásobníku na 2 MB (2 097 152 bajtů) v šestnáctkovém 0x200000:

<aspNetCore processPath="dotnet"
    arguments=".\MyApp.dll"
    stdoutLogEnabled="false"
    stdoutLogFile="\\?\%home%\LogFiles\stdout"
    hostingModel="inprocess">
  <handlerSettings>
    <handlerSetting name="stackSize" value="200000" />
  </handlerSettings>
</aspNetCore>

Zakázat rotaci na konfiguraci

Nastavení disallowRotationOnConfigChange je určené pro modré nebo zelené scénáře, kdy by změna globální konfigurace neměla způsobit recyklaci všech webů. Pokud je tato příznaková hodnota pravdivá, recyklaci způsobí pouze změny související se samotným webem. Například web se recykluje, pokud se změní jeho web.config nebo pokud dojde ke změně něčeho, co je relevantní pro cestu webu z pohledu služby IIS. Obecná změna souboru applicationHost.config by ale nezpůsobovala recyklaci aplikace. Následující příklad nastaví toto nastavení na true:

<aspNetCore processPath="dotnet"
    arguments=".\MyApp.dll"
    stdoutLogEnabled="false"
    stdoutLogFile="\\?\%home%\LogFiles\stdout"
    hostingModel="inprocess">
  <handlerSettings>
    <handlerSetting name="disallowRotationOnConfigChange" value="true" />
  </handlerSettings>
</aspNetCore>

Toto nastavení odpovídá rozhraní API. ApplicationPoolRecycling.DisallowRotationOnConfigChange

Snížení pravděpodobnosti výskytu 503 během recyklace aplikace

Ve výchozím nastavení dochází k jednomu druhému zpoždění mezi tím, kdy služba IIS oznámí recyklaci nebo vypnutí a když ANCM řekne spravovanému serveru, aby zahájil vypnutí. Zpoždění je možné konfigurovat prostřednictvím ANCM_shutdownDelay proměnné prostředí nebo nastavením nastavení obslužné rutiny shutdownDelay . Obě hodnoty jsou v milisekundách. Zpoždění je primárně proto, aby se snížila pravděpodobnost situace, kdy:

  • Služba IIS nezačala začínat požadavky na řazení do fronty pro přechod do nové aplikace.
  • ANCM začne odmítat nové požadavky, které přicházejí do staré aplikace.

Toto nastavení neznamená, že příchozí požadavky budou o tuto částku zpožděné. Nastavení značí, že stará instance aplikace se po vypršení časového limitu začne vypínat. Pomalejší počítače nebo počítače s těžším využitím procesoru můžou tuto hodnotu potřebovat upravit, aby se snížila pravděpodobnost 503.

Následující příklad nastaví zpoždění na 5 sekund:

<aspNetCore processPath="dotnet"
    arguments=".\MyApp.dll"
    stdoutLogEnabled="false"
    stdoutLogFile="\\?\%home%\LogFiles\stdout"
    hostingModel="inprocess">
  <handlerSettings>
    <handlerSetting name="shutdownDelay" value="5000" />
  </handlerSettings>
</aspNetCore>

Konfigurace proxy serveru používá protokol HTTP a párovací token.

Týká se pouze hostování mimo proces.

Proxy server vytvořený mezi modulem ASP.NET Core a Kestrel používá protokol HTTP. Neexistuje žádné riziko odposlouchávání provozu mezi modulem a Kestrel z umístění mimo server.

Párovací token se používá k zajištění toho, že žádosti přijaté službou Kestrel IIS byly zasílané službou IIS a nepřišly z jiného zdroje. Token párování se vytvoří a nastaví do proměnné prostředí (ASPNETCORE_TOKEN) modulu. Párovací token se také nastaví do hlavičky (MS-ASPNETCORE-TOKEN) pro každý proxyovaný požadavek. Middleware služby IIS kontroluje každý obdržený požadavek a ověří, že hlavička párovacího tokenu odpovídá hodnotě proměnné prostředí. Pokud se hodnoty tokenu neshodují, požadavek se zaprotokoluje a odmítne. Proměnná prostředí párovacího tokenu a provoz mezi modulem a Kestrel nejsou přístupné z umístění mimo server. Bez znalosti hodnoty párového tokenu nemůže cyberattacker odesílat žádosti, které obcházejí kontrolu v middlewaru služby IIS.

základní modul ASP.NET se sdílenou konfigurací služby IIS

Instalační program základního TrustedInstaller modulu ASP.NET běží s oprávněními účtu. Vzhledem k tomu, že místní systémový účet nemá oprávnění ke změně cesty ke sdílené složce používané sdílenou konfigurací služby IIS, vyvolá instalační program chybu odepření přístupu při pokusu o konfiguraci nastavení modulu v applicationHost.config souboru ve sdílené složce.

Pokud používáte sdílenou konfiguraci služby IIS na stejném počítači jako instalace služby IIS, spusťte instalační program sady ASP.NET Core Hosting Bundle s parametrem nastaveným OPT_NO_SHARED_CONFIG_CHECK na 1:

dotnet-hosting-{VERSION}.exe OPT_NO_SHARED_CONFIG_CHECK=1

Pokud cesta ke sdílené konfiguraci není na stejném počítači jako instalace služby IIS, postupujte takto:

  1. Zakažte sdílenou konfiguraci služby IIS.
  2. Spusťte instalační program.
  3. Export aktualizovaného applicationHost.config souboru do sdílené složky
  4. Znovu povolte sdílenou konfiguraci služby IIS.

Ochrana dat

Stack ochrany dat ASP.NET Core je využíván několika middlewary ASP.NET Core, včetně middlewaru používaného k ověřování. I když se v uživatelském kódu nevolají rozhraní Data Protection API, ve skriptu nasazení nebo v uživatelském kódu by měla být nakonfigurovaná ochrana dat, aby se vytvořilo trvalé úložiště kryptografických klíčů. Pokud ochrana dat není nakonfigurovaná, klíče se uchovávají v paměti a při restartování aplikace se zahodí.

Pokud je klíčenka pro ochranu dat při restartu aplikace uložená v paměti:

  • Všechny ověřovací tokeny založené na souborech cookie se zneplatní.
  • Uživatelé se při dalším požadavku musí přihlásit znovu.
  • Veškerá data chráněná daným svazkem klíčů již není možné dešifrovat. To může zahrnovat tokeny CSRF a soubory cookie ASP.NET Core MVC TempData.

Pokud chcete v rámci služby IIS nakonfigurovat ochranu dat pro zachování svazku klíčů, použijte jeden z následujících postupů:

  • Vytvoření klíčů registru ochrany dat

    ASP.NET klíče ochrany základních dat používané aplikacemi ASP.NET Core jsou uložené v registru externím pro aplikace. Pokud chcete zachovat klíče pro danou aplikaci, vytvořte klíče registru pro fond aplikací.

    V případě samostatných instalací služby IIS mimo webovou farmu je možné pro jednotlivé fondy aplikací používané v aplikaci ASP.NET Core použít skript PowerShellu pro ochranu dat Provision-AutoGenKeys.ps1. Tento skript vytvoří klíč v registru HKLM, který je přístupný pouze pro účet pracovního procesu v app pool aplikace. Klíče v nečinnosti jsou šifrovány pomocí DPAPI s klíčem pro celý počítač.

    Ve scénářích webové farmy je možné aplikaci nakonfigurovat tak, aby používala cestu UNC k uložení okruhu klíče ochrany dat. Ve výchozím nastavení nejsou klíče šifrované. Ujistěte se, že jsou oprávnění k souborům pro sdílenou síť omezena na účet Windows, pod kterým aplikace běží. Certifikát X509 lze použít k ochraně uložených klíčů. Zvažte mechanismus, který uživatelům umožní nahrávat certifikáty. Umístěte certifikáty do důvěryhodného úložiště certifikátů uživatele a ujistěte se, že jsou dostupné na všech počítačích, na kterých běží aplikace uživatele. Další informace najdete v tématu Konfigurace ASP.NET základní ochrany dat.

  • Konfigurace fondu aplikací služby IIS pro načtení profilu uživatele

    Toto nastavení najdete v části Upřesňující nastavení fondu aplikací v části Model zpracování. Nastavte možnost Načíst profil uživatele na hodnotu True. Pokud je nastavená hodnota True, klíče se uchovávají v adresáři profilu uživatele a jsou chráněné pomocí rozhraní Data Protection API a klíče specifického pro daný uživatelský účet. Klíče se zachovají do %LOCALAPPDATA%/ASP.NET/DataProtection-Keys složky.

    Atribut setProfileEnvironment fondů aplikací musí být také povolen. Výchozí hodnota atributu setProfileEnvironment je true. V některých scénářích (například v operačním systému Windows) je atribut setProfileEnvironment nastavený na hodnotu false. Pokud se klíče neuchovávají v adresáři profilu uživatele podle očekávání:

    1. Přejděte do složky %windir%/system32/inetsrv/config.
    2. Otevřete soubor applicationHost.config.
    3. Vyhledejte element <system.applicationHost><applicationPools><applicationPoolDefaults><processModel>.
    4. Ověřte, že není k dispozici atribut setProfileEnvironment, aby se použila výchozí hodnota true, nebo explicitně nastavte hodnotu tohoto atributu na true.
  • Použití systému souborů jako úložiště svazku klíčů

    Upravte kód aplikace tak, aby se jako úložiště svazku klíčů používal systém souborů. K zajištění ochrany svazku klíčů použijte certifikát X509 a ujistěte se, že se jedná o důvěryhodný certifikát. Pokud je certifikát samopodepsaný, umístěte certifikát do důvěryhodného kořenového úložiště.

    Pokud používáte službu IIS na webové farmě:

    • Použijte sdílenou složku, ke které mají přístup všechny počítače.
    • Na každý počítač nasaďte certifikát X509. Nakonfigurujte ochranu dat v kódu.
  • Nastavení zásad pro ochranu dat pro celý počítač

    Systém Ochrany dat má omezenou podporu pro nastavení výchozích zásad pro všechny aplikace, které využívají rozhraní API ochrany dat. Další informace najdete v tématu Přehled ochrany dat ASP.NET Core.

Konfigurace služby IIS

Serverové operační systémy Windows

Povolte roli serveru Webový server (služba IIS) a vytvořte služby role.

  1. Použijte průvodce přidáním rolí a funkcí z nabídky Správa nebo odkazu ve Správci serveru. V kroku Role serveru zaškrtněte políčko u možnosti Webový server (služba IIS).

    V kroku Vybrat role serveru je vybraná role Webový server (služba IIS).

  2. Po kroku Funkce se načte krok Služby role Webový server (IIS). Vyberte požadované služby role IIS nebo přijměte výchozí služby role.

    V kroku Vybrat služby role jsou vybrané výchozí služby role.

    Ověřování Windows (volitelné)
    Pokud chcete povolit Integrované ověřování Windows, rozbalte následující uzly: Webový server>Zabezpečení. Vyberte funkci Ověřování Windows. Další informace najdete v tématu Integrované ověřování Windows <windowsAuthentication> a Konfigurace Integrovaného ověřování Windows.

    WebSockets (volitelné)
    Protokol WebSocket se podporuje v ASP.NET Core 1.1 nebo novější verzi. Pokud chcete povolit protokol WebSocket, rozbalte následující uzly: Webový server>Vývoj aplikací. Vyberte funkci Protokol WebSocket. Další informace najdete v tématu WebSocket.

  3. Pokračujte krokem Potvrzení a nainstalujte roli a služby webového serveru. Po dokončení instalace role Webový server (služba IIS) se nevyžaduje restartování serveru ani služby IIS.

Desktopové operační systémy Windows

Povolte konzolu pro správu služby IIS a webové služby.

  1. Přejděte do části Ovládací panely>Programy>Programy a funkce>Zapnout nebo vypnout funkce systému Windows (na levé straně obrazovky).

  2. Otevřete uzel Internetová informační služba. Otevřete uzel Nástroje webové správy.

  3. Zaškrtněte políčko u možnosti Konzola pro správu služby IIS.

  4. Zaškrtněte políčko u možnosti Webové služby.

  5. Přijměte výchozí funkce pro Webové služby nebo si přizpůsobte funkce služby IIS.

    Ověřování Windows (volitelné)
    Pokud chcete povolit Integrované ověřování Windows, rozbalte následující uzly: Webové služby>Zabezpečení. Vyberte funkci Ověřování Windows. Další informace najdete v tématu Integrované ověřování Windows <windowsAuthentication> a Konfigurace Integrovaného ověřování Windows.

    WebSockets (volitelné)
    Protokol WebSocket se podporuje v ASP.NET Core 1.1 nebo novější verzi. Pokud chcete povolit protokol WebSocket, rozbalte následující uzly: Webové služby>Funkce pro vývoj aplikací. Vyberte funkci Protokol WebSocket. Další informace najdete v tématu WebSocket.

  6. Pokud instalace služby IIS vyžaduje restartování, restartujte systém.

V okně Funkce systému Windows jsou vybrané možnosti Konzola pro správu služby IIS a Webové služby.

Virtuální adresáře

Aplikace ASP.NET Core nepodporují virtuální adresáře služby IIS. Aplikaci je možné hostovat jako dílčí aplikaci.

Sub-applications

Aplikaci ASP.NET Core je možné hostovat jako dílčí aplikaci služby IIS. Cesta k dílčí aplikaci se stane součástí adresy URL kořenové aplikace.

Statické odkazy na prostředky v rámci podaplikace by měly v MVC a na stránkách používat notaci vlnovka-lomítko (~/). Notace znaku tildy s lomítkem aktivuje pomocník značek, který přidá cestu základní dílčí aplikace před vykreslený relativní odkaz. Pro dílčí aplikaci na /subapp_path se obrázek spojený s src="~/image.png" vykreslí jako src="/subapp_path/image.png". Middleware Static File kořenové aplikace nezpracovává požadavky na statické soubory. Požadavek je zpracováván middlewarem Static File dílčí aplikace.

Note

Razor komponenty (.razor) by neměly používat notaci vlnovka lomítko. Další informace najdete v ASP.NET Core Blazor základní cestě aplikace.

Pokud je atribut src statického prostředku nastavený na absolutní cestu (například src="/image.png"), odkaz se vykreslí bez základu cesty dílčí aplikace. Middleware pro statické soubory v kořenové aplikaci se pokouší zpracovat prostředek z kořenového adresáře webu kořenové aplikace, což povede k odpovědi 404 – Nenalezeno, pokud daný statický prostředek není dostupný z kořenové aplikace.

Hostování aplikace ASP.NET Core jako dílčí aplikace v rámci jiné aplikace ASP.NET Core:

  1. Vytvořte pro dílčí aplikaci fond aplikací. Nastavte verzi .NET CLR na Bez spravovaného kódu, protože Core Common Language Runtime (CoreCLR) pro .NET se spouští pro hostování aplikace ve worker procesu, nikoliv desktopový CLR (.NET CLR).

  2. Přidejte kořenový web ve Správci služby IIS s dílčí aplikací v podsložce pod kořenovým webem.

  3. Ve Správci služby IIS klikněte pravým tlačítkem na složku dílčí aplikace a vyberte Převést na aplikaci.

  4. V dialogovém okně Přidat aplikaci použijte tlačítko Vybrat u Fondu aplikací pro přiřazení fondu aplikací, který jste vytvořili pro dílčí aplikaci. Vyberte OK.

Přiřazení samostatného fondu aplikací dílčí aplikaci je podmínkou pro použití modelu vnitroprocesového hostování.

Další informace o modelu vnitroprocesového hostování a konfiguraci modulu ASP.NET Core najdete v tématu Modul ASP.NET Core (ANCM) pro službu IIS.

Fondy aplikací

Izolaci aplikačního fondu určuje model hostování.

  • Vnitroprocesové hostování: Aplikace musí běžet v samostatných fondech aplikací.
  • Mimoprocesové hostování: Jednotlivé aplikace doporučujeme od sebe navzájem izolovat tím, že každá aplikace bude běžet ve vlastním fondu aplikací.

V dialogovém okně Přidat web je ve výchozím nastavení nastavený jeden fond aplikací na aplikaci. Text zadaný do pole Název webu se automaticky přenese do textového pole Fond aplikací. Při přidání webu se vytvoří nový fond aplikací s použitím názvu webu.

Identity aplikační fond

Účet identity fondu aplikací umožňuje aplikaci spouštět pod jedinečným účtem bez nutnosti vytvářet a spravovat domény nebo místní účty. Ve službě IIS 8.0 nebo novější pracovní proces správce služby IIS (WAS) ve výchozím nastavení vytvoří virtuální účet s názvem nového fondu aplikací a spouští pracovní procesy fondu aplikací pod tímto účtem. V konzole pro správu služby IIS v části Upřesnit nastavení fondu aplikací se ujistěte, že je nastavená Identity na použití ApplicationPoolIdentity:

Dialogové okno Rozšířené nastavení skupiny aplikací

Proces správy služby IIS vytvoří v systému zabezpečení Windows zabezpečený identifikátor s názvem fondu aplikací. Prostředky je možné zabezpečit pomocí této identity. Tato identita ale není skutečným uživatelským účtem a nezobrazuje se v konzole pro správu uživatelů systému Windows.

Pokud pracovní proces služby IIS vyžaduje k aplikaci přístup se zvýšenými oprávněními, upravte seznam řízení přístupu (ACL) pro adresář obsahující aplikaci:

  1. Otevřete Průzkumníka Windows a přejděte do příslušného adresáře.

  2. Klikněte na adresář pravým tlačítkem a vyberte Vlastnosti.

  3. Na kartě Zabezpečení vyberte tlačítko Upravit a pak tlačítko Přidat.

  4. Vyberte tlačítko Umístění a ujistěte se, že je systém vybrán.

  5. Zadejte IIS AppPool\{APP POOL NAME} formát, kde zástupným symbolem {APP POOL NAME} je název fondu aplikací, do pole Zadejte názvy objektů, které chcete vybrat. Vyberte tlačítko Kontrola názvů. V případě fondu aplikací DefaultAppPool ke kontrole názvů použijte IIS AppPool\DefaultAppPool. Po výběru tlačítka Kontrola názvů se v oblasti názvů objektů označí hodnota DefaultAppPool. Název fondu aplikací není možné zadat přímo do oblasti názvů objektů. Při kontrole názvu objektu použijte formát IIS AppPool\{APP POOL NAME}, kde zástupný symbol {APP POOL NAME} je název fondu aplikací.

    Dialogové okno Vyberte uživatele nebo skupiny pro složku aplikace: Název fondu aplikací

  6. Vyberte OK.

    Dialogové okno Vybrat uživatele nebo skupiny pro složku aplikace: Po výběru tlačítka Kontrola názvů se v oblasti názvů objektů zobrazí název objektu DefaultAppPool.

  7. Oprávnění ke čtení a spuštění by měla být ve výchozím nastavení udělena. Podle potřeby udělte další oprávnění.

Přístup je možné udělit také na příkazovém řádku pomocí nástroje ICACLS. V příkladu defaultAppPool slouží následující příkaz k udělení oprávnění ke MyWebApp čtení a spuštění složky, podsložek a souborů:

ICACLS C:\sites\MyWebApp /grant "IIS AppPool\DefaultAppPool:(OI)(CI)RX"

Další informace najdete v tématu icacls.

Podpora HTTP/2

ASP.NET Core podporuje HTTP/2 v následujících scénářích nasazení služby IIS:

  • In-process
    • Windows Server 2016 nebo Windows 10 nebo novější, služba IIS 10 nebo novější
    • Připojení přes protokol TLS 1.2 nebo novější
  • Out-of-process
    • Windows Server 2016 nebo Windows 10 nebo novější, služba IIS 10 nebo novější
    • Připojení veřejného hraničního serveru používají HTTP/2, ale připojení reverzního proxy k serveru Kestrel používá HTTP/1.1.
    • Připojení přes protokol TLS 1.2 nebo novější

Při procesním nasazení, když je navázáno připojení HTTP/2, HttpRequest.Protocol hlásí HTTP/2. V případě mimoprocesového nasazení vlastnost HttpRequest.Protocol po navázání připojení HTTP/2 bude obsahovat hodnotu HTTP/1.1.

Další informace o modelech vnitroprocesového a mimoprocesového hostování najdete v tématu Modul ASP.NET Core (ANCM) pro službu IIS.

Ve výchozím nastavení je protokol HTTP/2 povolený. Pokud není možné navázat připojení HTTP/2, naváže se připojení HTTP/1.1. Další informace o konfiguraci HTTP/2 v nasazeních služby IIS najdete v tématu HTTP/2 ve službě IIS.

Předběžné požadavky CORS

Tato část se týká pouze aplikací ASP.NET Core, které cílí na .NET Framework.

V případě aplikace ASP.NET Core, která cílí na .NET Framework, se ve službě IIS ve výchozím nastavení nepředávají do aplikace požadavky OPTIONS. Informace o konfiguraci obslužných rutin služby IIS aplikace v souboru web.config pro předávání požadavků OPTIONS najdete v části Povolení požadavků z různých zdrojů v rozhraní ASP.NET Web API 2: Jak funguje CORS.

Modul Inicializace aplikace a časový limit nečinnosti

Při hostování ve službě IIS s využitím modulu ASP.NET Core verze 2:

Modul Inicializace aplikace

Platí pro aplikace hostované vnitroprocesově i mimoprocesově.

Inicializace aplikace služby IIS je funkce služby IIS, která do aplikace odešle požadavek HTTP, když se spustí nebo recykluje fond aplikací. Tento požadavek aktivuje spuštění aplikace. Služba IIS za účelem inicializace aplikace ve výchozím nastavení odešle požadavek na kořenovou adresu URL aplikace (/). Další podrobnosti o konfiguraci najdete v části Další zdroje informací.

Ověřte, že je povolená funkce role Inicializace aplikace služby IIS:

Desktopové systémy Windows 7 nebo novější, pokud používáte službu IIS místně:

  1. Přejděte do části Ovládací panely>Programy>Programy a funkce>Zapnout nebo vypnout funkce systému Windows (na levé straně obrazovky).
  2. Otevřete uzel Internetová informační služba>Webové služby>Funkce pro vývoj aplikací.
  3. Zaškrtněte políčko u možnosti Inicializace aplikace.

Windows Server 2008 R2 nebo novější:

  1. Otevřete Průvodce přidáním rolí a funkcí.
  2. Na panelu Vybrat služby rolí otevřete uzel Vývoj aplikací.
  3. Zaškrtněte políčko u možnosti Inicializace aplikace.

K povolení modulu Inicializace aplikace pro web použijte některý z následujících přístupů:

  • Ve Správci služby IIS:

    1. Na panelu Připojení vyberte Fondy aplikací.
    2. V seznamu klikněte pravým tlačítkem na fond aplikací aplikace a vyberte Upřesňující nastavení.
    3. Výchozí spouštěcí režim je OnDemand. Nastavte režim spuštění na AlwaysRunning. Vyberte OK.
    4. Na panelu Připojení otevřete uzel Weby.
    5. Klikněte pravým tlačítkem na aplikaci a vyberte Spravovat web>Upřesňující nastavení.
    6. Výchozí nastavení Preload Enabled je False. Nastavte Předběžné načtení povoleno na True. Vyberte OK.
  • Pomocí web.config, přidejte <applicationInitialization> element se doAppInitAfterRestart sadou na true elementy <system.webServer> v souboru aplikace web.config :

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <location path="." inheritInChildApplications="false">
        <system.webServer>
          <applicationInitialization doAppInitAfterRestart="true" />
        </system.webServer>
      </location>
    </configuration>
    

Časový limit nečinnosti

Platí pouze pro aplikace hostované vnitroprocesově.

Pokud chcete zabránit nečinnosti aplikace, pomocí Správce služby IIS nastavte časový limit nečinnosti fondu aplikací:

  1. Na panelu Připojení vyberte Fondy aplikací.
  2. V seznamu klikněte pravým tlačítkem na fond aplikací aplikace a vyberte Upřesňující nastavení.
  3. Výchozí časový limit nečinnosti (minuty) je 20 minuty. Nastavte časový limit nečinnosti (minuty) na 0 (nula). Vyberte OK.
  4. Recyklujte pracovní proces.

Pokud chcete zabránit vypršení časového limitu aplikací hostovaných mimoprocesově, použijte některý z následujících přístupů:

Další zdroje informací o modulu Inicializace aplikace a časovém limitu nečinnosti

Umístění modulů, schémat a konfiguračních souborů

Module

IIS (x86/amd64):

  • %windir%\System32\inetsrv\aspnetcore.dll

  • %windir%\SysWOW64\inetsrv\aspnetcore.dll

  • %ProgramFiles%\IIS\Asp.Net Core Module\V2\aspnetcorev2.dll

  • %ProgramFiles(x86)%\IIS\Asp.Net Core Module\V2\aspnetcorev2.dll

IIS Express (x86/amd64):

  • %ProgramFiles%\IIS Express\aspnetcore.dll

  • %ProgramFiles(x86)%\IIS Express\aspnetcore.dll

  • %ProgramFiles%\IIS Express\Asp.Net Core Module\V2\aspnetcorev2.dll

  • %ProgramFiles(x86)%\IIS Express\Asp.Net Core Module\V2\aspnetcorev2.dll

Schema

IIS

  • %windir%\System32\inetsrv\config\schema\aspnetcore_schema.xml

  • %windir%\System32\inetsrv\config\schema\aspnetcore_schema_v2.xml

IIS Express

  • %ProgramFiles%\IIS Express\config\schema\aspnetcore_schema.xml

  • %ProgramFiles%\IIS Express\config\schema\aspnetcore_schema_v2.xml

Configuration

IIS

  • %windir%\System32\inetsrv\config\applicationHost.config

IIS Express

  • Visual Studio: {APPLICATION ROOT}\.vs\config\applicationHost.config

  • iisexpress.exe CLI: %USERPROFILE%\Documents\IISExpress\config\applicationhost.config

Soubory najdete vyhledáním aspnetcore v applicationHost.config souboru.

Nainstalujte Web Deploy při publikování pomocí Visual Studio

Pokud k nasazování aplikací na servery používáte Nasazení webu, nainstalujte na server nejnovější verzi Nasazení webu. Pokud chcete nainstalovat Web Deploy, podívejte se na Stažení služby IIS: Web Deploy.

Vytvoření webu služby IIS

  1. V hostitelském systému vytvořte složku, která bude obsahovat publikované soubory a složky aplikace. V následujícím kroku se cesta k této složce poskytne službě IIS jako fyzická cesta k aplikaci. Další informace o složce pro nasazení aplikace a rozložení souborů najdete v tématu Adresářová struktura ASP.NET Core.

  2. Ve Správci služby IIS otevřete uzel serveru na panelu Připojení. Klikněte pravým tlačítkem na složku Weby. V místní nabídce vyberte Přidat web.

  3. Zadejte Název webu a nastavte fyzickou cestu ke složce pro nasazení aplikace. Zadejte konfiguraci vazby a výběrem možnosti OK web vytvořte:

    V kroku Přidat web zadejte název webu, fyzickou cestu a název hostitele.

    Warning

    Vazby nejvyšší úrovně se zástupnými znaky (http://*:80/ a http://+:80) by se neměly používat. Vazby nejvyšší úrovně s víceznakovými zástupnými symboly mohou vystavit vaši aplikaci bezpečnostním zranitelnostem. Týká se to silných i slabých zástupných znaků. Místo zástupných znaků používejte explicitní názvy hostitelů. Vazeb subdomén se zástupnými znaky (například *.mysub.com) se toto bezpečnostní riziko netýká, pokud máte kontrolu nad celou nadřazenou doménou (na rozdíl od vazby *.com, která je zranitelná). Další informace najdete v dokumentu RFC 9110: Sémantika HTTP (oddíl 7.2: Hostitel a :autorita).

  4. Pod uzlem serveru vyberte Fondy aplikací.

  5. Klikněte pravým tlačítkem na fond aplikací webu a v místní nabídce vyberte Základní nastavení.

  6. V okně Upravit fond aplikací nastavte verzi .NET CLR na hodnotu Bez spravovaného kódu:

    Nastavte pro verzi .NET CLR možnost Bez spravovaného kódu.

    ASP.NET Core běží v samostatném procesu a spravuje modul runtime. ASP.NET Core nespoléhá na načítání desktopového modulu CLR (.NET CLR). Základní Common Language Runtime (CoreCLR) pro .NET je spuštěn za účelem hostování aplikace v pracovním procesu. Nastavení verze .NET CLR na hodnotu Bez spravovaného kódu je volitelné, ale doporučuje se.

    • U 32bitového (x86) nezávislého nasazení publikovaného s 32bitovou sadou SDK s využitím modelu hostování v procesu, povolte podporu fondu aplikací pro 32 bity. Ve Správci služby IIS na bočním panelu Připojení přejděte do části Fondy aplikací. Vyberte aplikační fond aplikace. Na bočním panelu Akce vyberte Upřesňující nastavení. Nastavte možnost Povolit 32bitové aplikace na hodnotu True.

    • V případě 64bitového (x64) samostatného nasazení , které používá model hostování v procesu, zakažte fond aplikací pro 32bitové procesy (x86). Ve Správci služby IIS na bočním panelu Připojení přejděte do části Fondy aplikací. Vyberte aplikační fond aplikace. Na bočním panelu Akce vyberte Upřesňující nastavení. Nastavte možnost Povolit 32bitové aplikace na hodnotu False.

  7. Ověřte, že identita modelu procesu má správná oprávnění.

    Pokud se výchozí identita fondu aplikací (procesový model>Identity) změní z ApplicationPoolIdentity na jinou identitu, ověřte, že nová identita má požadovaná oprávnění pro přístup ke složce, databázi a dalším požadovaným prostředkům aplikace. Fond aplikací například vyžaduje oprávnění ke čtení a zápisu ve složkách, ve kterých aplikace čte a zapisuje soubory.

Konfigurace ověřování Windows (volitelné)
Další informace najdete v tématu Konfigurace Integrovaného ověřování Windows.

Stínová kopie

Sestavení aplikace stínové kopie do ASP.NET základního modulu (ANCM) pro službu IIS můžou poskytovat lepší prostředí koncového uživatele než zastavení aplikace nasazením offline souboru aplikace.

Když ve Windows běží aplikace ASP.NET Core, binární soubory se uzamknou, aby je nebylo možné upravovat ani nahrazovat. Stínová kopie umožňuje aktualizaci sestavení aplikace, když je aplikace spuštěná, a to tak, že vytvoří kopii sestavení.

Stínová kopie není určená k povolení nasazení beze ztráty dostupnosti, takže se očekává, že služba IIS aplikaci stále recykluje a některé požadavky můžou dostat odpověď 503 Service Unavailable. Pro nasazení s nulovými výpadky doporučujeme použít vzor, jako je modrá-zelená nasazení nebo nasazovací sloty Azure. Stínová kopie pomáhá minimalizovat výpadky, ale nemůže je úplně eliminovat.

Stínová kopie je povolena přizpůsobením nastavení obslužné rutiny ANCM v web.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <remove name="aspNetCore"/>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified"/>
    </handlers>
    <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".logsstdout">
      <handlerSettings>
        <handlerSetting name="enableShadowCopy" value="true" />
        <!-- Ensure that the IIS ApplicationPool identity has permission to this directory -->
        <handlerSetting name="shadowCopyDirectory" value="../ShadowCopyDirectory/" />
      </handlerSettings>
    </aspNetCore>
  </system.webServer>
</configuration>