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

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 stackSize pomocí nastavení v bajtech v web.config souboru. Výchozí velikost je 1 048 576 bajtů (1 MB). Následující příklad změní velikost zásobníku na 2 MB (2 097 152 bajtů):

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

Zakázání obměně konfigurace

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 tento příznak pravdivý, způsobí to recyklaci pouze změny související se samotným webem. Web například recykluje, pokud se jeho web.config změní nebo něco, 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

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. Token párování se také nastaví do hlavičky (MS-ASPNETCORE-TOKEN) pro každý požadavek naxied. Middleware služby IIS kontroluje každý požadavek, který obdrží, a ověří, že hodnota hlavičky spárující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 útočník odeslat žá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

Několik middlewarů ASP.NET Core, včetně middlewaru sloužícímu k ověřování, využívá stack ochrany dat ASP.NET Core. 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 vyzvánění klíče ochrany dat při restartování 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 nebo 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

    Klíče ochrany 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íč registru v registru HKLM, který je přístupný pouze pro účet pracovního procesu fondu aplikací aplikace. Klíče se šifrují v neaktivním uloženém stavu pomocí rozhraní Data Protection API a klíče na úrovni počítače.

    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ěží. K zajištění ochrany klíčů v neaktivním uloženém stavu je možné použít certifikát X509. 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.

    Musí být také povolen atribut fondu setProfileEnvironment aplikací. 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 podepsaný svým držitelem, 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).

    The Web Server IIS role is selected in the Select server roles step.

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

    The default role services are selected in the Select role services step.

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

    WebSocket (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.

    Integrované 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 Integrované ověřování Windows. Další informace najdete v tématu Integrované ověřování Windows <windowsAuthentication> a Konfigurace Integrovaného ověřování Windows.

    WebSocket (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.

IIS Management Console and World Wide Web Services are selected in Windows Features.

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.

Dílčí aplikace

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 dílčí aplikace by měly v MVC a Razor Pages používat vlnovku lomítko (~/). Notace znaku tildy s lomítkem aktivuje pomocnou rutinu značky, která před vykreslený relativní odkaz přidá základ cesty dílčí aplikace. V případě dílčí aplikace v cestě /subapp_path se odkaz na obrázek src="~/image.png" vykreslí jako src="/subapp_path/image.png". Middleware Static File kořenové aplikace nezpracovává požadavky na statické soubory. Tyto požadavky zpracovává middleware Static File dílčí aplikace.

Poznámka:

Razor komponenty (.razor) by neměly používat vlnovku lomítko. Další informace najdete v dokumentaci k 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 Static File kořenové aplikace se pokusí získat prostředek z kořenového adresáře webu kořenové aplikace, což bude mít za následek odpověď 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 hodnotu Bez spravovaného kódu, protože pro účely hostování aplikace v pracovním procesu se spustí modul CoreCLR (Core Common Language Runtime) pro .NET Core, a ne desktopový modul CLR (.NET CLR).

  2. Přidejte kořenový web s dílčí aplikací v podsložce do Správce služby IIS.

  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 pomocí tlačítka Vybrat u možnosti Fond aplikací přiřaďte dílčí aplikaci fond aplikací, který jste pro ni vytvořili. 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 fondů aplikací 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 fondů aplikací

Účet identity fondu aplikací umožňuje spouštět aplikaci pod jedinečným účtem, aniž by se musely 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í pro fond aplikací se ujistěte, že je nastavená Identity na použitíApplicationPoolIdentity:

Application pool advanced settings dialog

Proces správy služby IIS vytvoří v systému zabezpečení Windows zabezpečený identifikátor s názvem fondu aplikací. Pomocí této identity je možné zabezpečit prostředky. Tato identita však není skutečným uživatelským účtem a nezobrazí se v konzole pro správu uživatelů 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 vybraný systém.

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

    Select users or groups dialog for the app folder: The app pool name of

  6. Vyberte OK.

    Select users or groups dialog for the app folder: After selecting

  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:

  • Probíhá proces
    • 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ší
  • Mimo proces
    • Windows Server 2016 nebo Windows 10 nebo novější, služba IIS 10 nebo novější
    • Připojení k veřejnému hraničnímu serveru používají HTTP/2, ale připojení proxy serveru k serveru Kestrel používá HTTP/1.1.
    • Připojení přes protokol TLS 1.2 nebo novější

V případě vnitroprocesového nasazení vlastnost HttpRequest.Protocol po navázání připojení HTTP/2 bude obsahovat hodnotu 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 AlwaysRunninghodnotu . 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 možnost Předběžné načtení povoleno na Truehodnotu . 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ů

Modul

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

Schéma

Služby 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

Konfigurace

Služby 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.

Instalace Nasazení webu při publikování pomocí sady Visual Studio

Pokud k nasazování aplikací na servery používáte Nasazení webu, nainstalujte na server nejnovější verzi Nasazení webu. Chcete-li nainstalovat nasazení webu, získejte instalační program z webu Stažení softwaru společnosti Microsoft.

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:

    Supply the Site name, physical path, and Host name in the Add Website step.

    Upozorňující

    Vazby nejvyšší úrovně se zástupnými znaky (http://*:80/ a http://+:80) by se neměly používat. Vazby nejvyšší úrovně se zástupnými znaky můžou vaši aplikaci vystavit ohrožení zabezpečení. 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:

    Set No Managed Code for the .NET CLR version.

    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). Pro účely hostování aplikace v pracovním procesu se spustí modul CoreCLR (Core Common Language Runtime) pro .NET Core. Nastavení verze .NET CLR na hodnotu Bez spravovaného kódu je volitelné, ale doporučuje se.

    • U 32bitového (x86) samostatného nasazení publikovaného s 32bitovou sadou SDK, která používá model hostování v procesu, povolte fond aplikací pro 32bitovou verzi. Ve Správci služby IIS na bočním panelu Připojení přejděte do části Fondy aplikací. Vyberte fond aplikací 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 fond aplikací 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 má identita modelu zpracování správná oprávnění.

    Pokud se výchozí identita fondu aplikací (Model zpracování>Identity) změní z identity 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 Integrovaného 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í nulového výpadku, takže se očekává, že služba IIS aplikaci stále recykluje a některé požadavky můžou dostat odpověď na nedostupnou službu 503. Pro nasazení s nulovými výpadky doporučujeme použít vzor, jako jsou modrá-zelená nasazení nebo sloty nasazení Azure. Stínová kopie pomáhá minimalizovat výpadky nasazení, ale nemůže ji ú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>