Hostování ASP.NET Core ve Windows pomocí služby IIS

Internetová informační služba (IIS) je flexibilní, zabezpečený a spravovatelný webový server pro hostování webových aplikací, včetně aplikací ASP.NET Core.

Podporované platformy

Podporovány jsou následující operační systémy:

  • Windows 7 nebo novější
  • Windows Server 2012 R2 nebo novější

Podporují se aplikace publikované pro 32bitové (x86) nebo 64bitové (x64) nasazení. Nasaďte 32bitovou aplikaci s 32bitovou (x86) sadou .NET Core SDK, pokud aplikace:

  • Nevyžaduje větší dostupný adresní prostor virtuální paměti pro 64bitovou aplikaci.
  • Nevyžaduje větší zásobník služby IIS.
  • Nemá nativní 64bitové závislosti.

Instalace modulu nebo sady pro hosting ASP.NET Core

Stáhněte si nejnovější instalační program pomocí následujícího odkazu:

Instalační program aktuální sady pro hosting .NET Core (přímé stažení)

Další podrobnosti a pokyny k instalaci modulu ASP.NET Core nebo instalaci různých verzí najdete v tématu Instalace sady pro hosting .NET Core.

Pokud chcete stáhnout předchozí verze hostitelské sady, přečtěte si tento problém s GitHubem.

Začínáme

Úvodní informace k hostování webů ve službě IIS najdete v naší příručce Začínáme.

Úvodní informace k hostování webů v Azure App Services najdete v našem průvodci nasazením do Azure App Service.

Konfigurace

Doprovodné materiály ke konfiguraci najdete v tématu Pokročilá konfigurace.

Zdroje informací o nasazení pro správce služby IIS

Překrývající se recyklace

V zájmu zajištění nasazení bez výpadků obecně doporučujeme používat model typu modrozelené nasazení. Funkce jako překrývající se recyklace sice pomáhají, ale nezaručují možnost provést nasazení bez výpadků. Další informace najdete u tohoto problému na GitHubu.

Volitelné klientské certifikáty

Informace o aplikacích, které musí chránit podmnožinu aplikace pomocí certifikátu, najdete v části Volitelné klientské certifikáty.

Další materiály

Kurz publikování aplikace ASP.NET Core na serveru služby IIS najdete tady: Publikování aplikace ASP.NET Core ve službě IIS.

Instalace sady pro hosting .NET Core

Podporované operační systémy

Podporovány jsou následující operační systémy:

  • Windows 7 nebo novější
  • Windows Server 2012 R2 nebo novější

Server HTTP.sys (dříve označovaný jako WebListener) nefunguje se službou IIS v konfiguraci reverzního proxy serveru. Použijte server Kestrel.

Informace o hostování v Azure najdete v tématu Nasazování aplikací ASP.NET Core v Azure App Service.

Doprovodné materiály k řešení potíží najdete v tématu Řešení potíží s projekty ASP.NET Core a jejich ladění.

Podporované platformy

Podporují se aplikace publikované pro 32bitové (x86) nebo 64bitové (x64) nasazení. Nasaďte 32bitovou aplikaci s 32bitovou (x86) sadou .NET Core SDK, pokud aplikace:

  • Nevyžaduje větší dostupný adresní prostor virtuální paměti pro 64bitovou aplikaci.
  • Nevyžaduje větší zásobník služby IIS.
  • Nemá nativní 64bitové závislosti.

Aplikace publikované pro 32bitové systémy (x86) musí mít povolené 32bitové fondy aplikací IIS. Další informace najdete v části Vytvoření webu služby IIS.

K publikování 64bitové aplikace použijte 64bitovou (x64) sadu .NET Core SDK. V hostitelském systému musí být k dispozici 64bitový modul runtime.

Modely hostingu

Model vnitroprocesového hostování

Při vnitroprocesovém hostování aplikace ASP.NET Core běží ve stejném procesu jako příslušný pracovní proces služby IIS. Vnitroprocesové hostování nabízí oproti mimoprocesovému hostování vyšší výkon, protože požadavky neprocházejí přes proxy v podobě adaptéru zpětné smyčky, což je síťové rozhraní, které vrací odchozí síťový provoz zpět do stejného počítače. Služba IIS zajišťuje správu procesů s využitím Aktivační služby procesů systému Windows (WAS).

Modul ASP.NET Core:

  • Provede inicializaci aplikace.
    • Načte CoreCLR.
    • Zavolá metodu Program.Main.
  • Zpracovává nativní požadavky služby IIS po celou dobu jejich života.

Následující diagram znázorňuje vztah mezi službou IIS, modulem ASP.NET Core a vnitroprocesově hostovanou aplikací:

ASP.NET Core Module in the in-process hosting scenario

  1. Požadavek přijde z webu do ovladače HTTP.sys v režimu jádra.
  2. Ovladač přesměruje nativní požadavek do služby IIS na nakonfigurovaném portu webu, obvykle 80 (HTTP) nebo 443 (HTTPS).
  3. Modul ASP.NET Core přijme nativní požadavek a předá ho serveru HTTP služby IIS (IISHttpServer). Server HTTP služby IIS představuje implementaci vnitroprocesového serveru pro službu IIS, který převede požadavek z nativního na spravovaný.

Po zpracování požadavku serverem HTTP služby IIS:

  1. Požadavek se odešle do kanálu middlewaru ASP.NET Core.
  2. Kanál middlewaru požadavek zpracuje a předá ho jako instanci HttpContext do logiky aplikace.
  3. Odpověď aplikace se předá zpět do služby IIS prostřednictvím serveru HTTP služby IIS.
  4. Služba IIS odešle odpověď klientovi, který požadavek inicioval.

Vnitroprocesové hostování je pro stávající aplikace volitelná funkce. Webové šablony ASP.NET Core využívají model vnitroprocesového hostování.

CreateDefaultBuilder přidá instanci IServer zavoláním metody UseIIS, která spustí CoreCLR a zahájí hostování aplikace v rámci pracovního procesu služby IIS (w3wp.exe nebo iisexpress.exe). Testy výkonnosti ukazují, že vnitroprocesové hostování aplikací .NET Core přináší výrazně vyšší propustnost v porovnání s mimoprocesovým hostováním aplikací a odesíláním požadavků na proxy server Kestrel.

Model vnitroprocesového hostování nedokáže načíst aplikace publikované jako jednotlivé spustitelné soubory.

Model mimoprocesového hostování

Vzhledem k tomu, že aplikace ASP.NET Core běží v procesu odděleném od pracovního procesu služby IIS, zajišťuje správu procesů modul ASP.NET Core. Modul zahájí tento proces pro aplikaci ASP.NET Core při přijetí prvního požadavku a v případě vypnutí nebo selhání aplikaci restartuje. Jedná se v podstatě o stejné chování jako u aplikací, které běží vnitroprocesově a jsou spravované Aktivační službou procesů systému Windows (WAS).

Následující diagram znázorňuje vztah mezi službou IIS, modulem ASP.NET Core a mimoprocesově hostovanou aplikací:

ASP.NET Core Module in the out-of-process hosting scenario

  1. Požadavky přijdou z webu do ovladače HTTP.sys v režimu jádra.
  2. Ovladač přesměruje požadavky do služby IIS na nakonfigurovaném portu webu. Nakonfigurovaný port je obvykle 80 (HTTP) nebo 443 (HTTPS).
  3. Modul předá požadavky na server Kestrel na náhodném portu dané aplikace. Náhodný port není 80 ani 443.

Modul ASP.NET Core tento port určí při spuštění prostřednictvím proměnné prostředí. Rozšíření UseIISIntegration nakonfiguruje server tak, aby naslouchal na adrese http://localhost:{PORT}. Provedou se další kontroly a požadavky, které nepocházejí z tohoto modulu, se zamítnou. Modul nepodporuje předávání HTTPS. Požadavky se předávají přes HTTP, i když je služba IIS přijme přes HTTPS.

Jakmile server Kestrel přijme požadavek z modulu, požadavek se přesměruje do kanálu middlewaru ASP.NET Core. Kanál middlewaru požadavek zpracuje a předá ho jako instanci HttpContext do logiky aplikace. Middleware přidaný integrací služby IIS aktualizuje schéma, vzdálenou IP adresu a základ cesty k účtu pro přesměrování požadavku na server Kestrel. Odpověď aplikace se předá zpět do služby IIS, která ji předá klientovi HTTP, který požadavek inicioval.

Doprovodné materiály ke konfiguraci modulu ASP.NET Core najdete v tématu Modul ASP.NET Core (ANCM) pro službu IIS.

Další informace o hostování najdete v části Hostitel v ASP.NET Core.

Konfigurace aplikací

Povolení komponent IISIntegration

Pokud chcete povolit integraci služby IIS, při sestavování hostitele v metodě CreateHostBuilder (Program.cs) zavolejte metodu CreateDefaultBuilder:

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        ...

Další informace najdete o metodě CreateDefaultBuilder najdete v tématu Obecný hostitel .NET v ASP.NET Core.

Možnosti služby IIS

Model vnitroprocesového hostování

Pokud chcete nakonfigurovat možnosti serveru služby IIS, vložte konfiguraci služby pro třídu IISServerOptions do souboru ConfigureServices. Následující příklad zakáže vlastnost AutomaticAuthentication:

services.Configure<IISServerOptions>(options => 
{
    options.AutomaticAuthentication = false;
});
Možnost Výchozí Nastavení
AutomaticAuthentication true Pokud je nastavená hodnota true, server služby IIS nastaví objekt HttpContext.User, který se ověřuje pomocí Integrovaného ověřování Windows. Pokud je nastavená hodnota false, server pro objekt HttpContext.User pouze poskytne identitu a bude reagovat na explicitní požadavky třídy AuthenticationScheme. Aby fungovala možnost AutomaticAuthentication, ve službě IIS musí být povolené Integrované ověřování Windows. Další informace najdete v tématu Integrované ověřování Windows.
AuthenticationDisplayName null Nastaví zobrazovaný název, který se zobrazí uživatelům na přihlašovacích stránkách.
AllowSynchronousIO false Určuje, jestli jsou pro HttpContext.Request a HttpContext.Response povolené synchronní vstupně-výstupní operace.
MaxRequestBodySize 30000000 Získá nebo nastaví maximální velikost textu požadavku pro HttpRequest. Upozorňujeme, že služba IIS má vlastní limit maxAllowedContentLength, který se vyhodnocuje před limitem MaxRequestBodySize nastaveným v IISServerOptions. Změna hodnoty MaxRequestBodySize nemá vliv na hodnotu maxAllowedContentLength. Pokud chcete zvýšit hodnotu maxAllowedContentLength, přidejte položku do souboru web.config a nastavte vyšší hodnotu maxAllowedContentLength. Další podrobnosti najdete v části Konfigurace.

Model mimoprocesového hostování

Pokud chcete nakonfigurovat možnosti služby IIS, vložte konfiguraci služby pro třídu IISOptions do souboru ConfigureServices. Následující příklad zabrání aplikaci vyplnit hodnotu HttpContext.Connection.ClientCertificate:

services.Configure<IISOptions>(options => 
{
    options.ForwardClientCertificate = false;
});
Možnost Výchozí Nastavení
AutomaticAuthentication true Pokud je nastavená hodnota true, middleware IIS Integration nastaví objekt HttpContext.User, který se ověřuje pomocí Integrovaného ověřování Windows. Pokud je nastavená hodnota false, middleware pro objekt HttpContext.User pouze poskytne identitu a bude reagovat na explicitní požadavky třídy AuthenticationScheme. Aby fungovala možnost AutomaticAuthentication, ve službě IIS musí být povolené Integrované ověřování Windows. Další informace najdete v tématu Integrované ověřování Windows.
AuthenticationDisplayName null Nastaví zobrazovaný název, který se zobrazí uživatelům na přihlašovacích stránkách.
ForwardClientCertificate true Pokud je nastavená hodnota true a je k dispozici hlavička požadavku MS-ASPNETCORE-CLIENTCERT, vyplní se hodnota HttpContext.Connection.ClientCertificate.

Scénáře týkající se proxy serveru a nástroje pro vyrovnávání zatížení

Middleware IIS Integration a modul ASP.NET Core jsou nakonfigurované tak, aby předávaly:

  • Schéma (HTTP/HTTPS)
  • Vzdálenou IP adresu, ze které požadavek pochází

Middleware IIS Integration konfiguruje middleware Forwarded Headers.

Aplikace hostované za dalšími proxy servery a nástroji pro vyrovnávání zatížení můžou vyžadovat další konfiguraci. Další informace najdete v tématu Konfigurace ASP.NET Core pro práci s proxy servery a nástroji pro vyrovnávání zatížení.

Soubor web.config

V souboru web.config se konfiguruje modul ASP.NET Core. 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 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.

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.

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

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

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.

Instalace sady pro hosting .NET Core

Nainstalujte v hostitelském systému sadu pro hosting .NET Core. Tato sada nainstaluje modul runtime .NET, knihovnu .NET Core a modul ASP.NET Core. Modul umožňuje provoz aplikací ASP.NET Core za službou IIS.

Důležité

V případě instalace sady pro hosting před instalací služby IIS je potřeba instalaci sady připravit. Po dokončení instalace služby IIS znovu spusťte instalační program sady pro hosting.

Pokud se sada pro hosting nainstaluje po instalaci 64bitové (x64) verze .NET Core, může se zdát, že sady SDK chybí (Nezjistily se žádné sady SDK). Pokud chcete tento problém vyřešit, projděte si téma Řešení potíží s projekty ASP.NET Core a jejich ladění.

Přímé stažení (aktuální verze)

Stáhněte si instalační program na následujícím odkazu:

Instalační program aktuální sady pro hosting .NET Core (přímé stažení)

Starší verze instalačního programu

Pokud chcete získat starší verzi instalačního programu:

  1. Přejděte na stránku Stáhnout .NET Core.
  2. Vyberte požadovanou verzi .NET Core.
  3. Ve sloupci Spouštění aplikací – Modul runtime vyhledejte řádek s požadovanou verzí modulu runtime .NET Core.
  4. Stáhněte si instalační program pomocí odkazu Sada pro hosting.

Upozorňující

Některé instalační programy obsahují verze po konci životnosti (EOL), které už Microsoft nepodporuje. Další informace najdete v části věnované zásadám podpory.

Instalace sady pro hosting

  1. Spusťte na serveru instalační program. Při spuštění instalačního programu z příkazového prostředí správce jsou k dispozici následující parametry:

    • OPT_NO_ANCM=1: Přeskočí se instalace modulu ASP.NET Core.
    • OPT_NO_RUNTIME=1: Přeskočí se instalace modulu runtime .NET Core. Používá se v případě, že je server hostitelem pouze samostatných nasazení (SCD).
    • OPT_NO_SHAREDFX=1: Přeskočí se instalace sdílené architektury ASP.NET (modul runtime ASP.NET). Používá se v případě, že je server hostitelem pouze samostatných nasazení (SCD).
    • OPT_NO_X86=1: Přeskočí se instalace modulů runtime x86. Tento parametr použijte, pokud víte, že nebudete hostovat 32bitové aplikace. Pokud existuje možnost, že budete v budoucnu hostovat 32bitové i 64bitové aplikace, nepoužívejte tento parametr a nainstalujte oba moduly runtime.
    • OPT_NO_SHARED_CONFIG_CHECK=1: Zakáže se kontrola používání sdílené konfigurace služby IIS, pokud je sdílená konfigurace (applicationHost.config) na stejném počítači jako instalace služby IIS. Tento parametr je k dispozici pouze v instalačních programech sady pro hostování ASP.NET Core 2.2 nebo novější verze. Další informace najdete v tématu Modul ASP.NET Core (ANCM) pro službu IIS.
  2. Při restartování služby IIS se zachytí změna systémové cesty, což je proměnná prostředí PATH, kterou provedl instalační program. Pokud chcete webový server restartovat, zastavte Aktivační službu procesů systému Windows (WAS) a pak restartujte Službu publikování na webu (W3SVC). Restartujte systém nebo v příkazovém prostředí se zvýšenými oprávněními spusťte následující příkazy:

    net stop was /y
    net start w3svc
    

ASP.NET Core u verzí oprav balíčků sdílené architektury neuplatňuje dopředné posouvání. Po upgradu sdílené architektury instalací nové sady pro hosting restartujte systém nebo v příkazovém prostředí se zvýšenými oprávněními spusťte následující příkazy:

net stop was /y
net start w3svc

Poznámka:

Informace o sdílené konfiguraci služby IIS najdete v tématu Modul ASP.NET Core se sdílenou konfigurací služby IIS.

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. K instalaci Nasazení webu použijte nástroj Instalace webové platformy (WebPI) nebo získejte instalační program přímo z webu Microsoft Download Center. Upřednostňovanou metodou je použít nástroj WebPI. WebPI nabízí samostatnou instalaci a konfiguraci pro poskytovatele hostingu.

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.

  7. ASP.NET Core 2.2 nebo novější:

    • V případě 32bitového (x86) samostatného nasazení publikovaného s 32bitovou sadou SDK, které využívá model vnitroprocesového hostování, 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é využívá model vnitroprocesového hostování, zakažte fond aplikací pro 32bitové (x86) procesy. 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.

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

Nasazení aplikace

Nasaďte aplikaci ve službě IIS do složky ve fyzické cestě, kterou jste vytvořili v části Vytvoření webu služby IIS. K nasazení doporučujeme použít Nasazení webu, ale existují různé možnosti, jak přesunout aplikaci ze složky publish projektu do složky pro nasazení v hostitelském systému.

Nasazení webu s využitím sady Visual Studio

Informace o vytvoření profilu publikování pro použití s Nasazením webu najdete v tématu Profily publikování sady Visual Studio pro nasazení aplikace ASP.NET Core. Pokud poskytovatel hostingu nabízí profil publikování nebo podporuje jeho vytvoření, stáhněte si jeho profil a importujte ho v dialogovém okně Publikovat sady Visual Studio:

Publish dialog page

Nasazení webu mimo sadu Visual Studio

Nasazení webu je možné používat také mimo sadu Visual Studio prostřednictvím příkazového řádku. Další informace najdete v tématu Nástroj Nasazení webu.

Alternativy k Nasazení webu

K přesunu aplikace do hostitelského systému můžete použít několik různých metod, mezi které patří ruční kopírování, Xcopy, Robocopy nebo PowerShell.

Další informace o nasazení ASP.NET Core ve službě IIS najdete v části Zdroje informací o nasazení pro správce služby IIS.

Procházení webu

Po nasazení aplikace v hostitelském systému odešlete požadavek na některý z veřejných koncových bodů aplikace.

V následujícím příkladu je web vázaný na název hostitelewww.mysite.com služby IIS na portu80. Požadavek se odešle na adresu http://www.mysite.com:

The Microsoft Edge browser has loaded the IIS startup page.

Uzamčené soubory nasazení

Když je aplikace spuštěná, soubory ve složce pro nasazení jsou uzamčené. Uzamčené soubory není možné během nasazování přepsat. Pokud chcete uvolnit uzamčené soubory v nasazení, jedním z následujících způsobů zastavte fond aplikací:

  • Použijte Nasazení webu a do souboru projektu přidejte odkaz na Microsoft.NET.Sdk.Web. Do kořenového adresáře webové aplikace se umístí soubor app_offline.htm. Pokud existuje tento soubor, modul ASP.NET Core aplikaci řádně vypne a během nasazování zobrazuje soubor app_offline.htm. Další informace najdete v referenčních informacích ke konfiguraci modulu ASP.NET Core.

  • Ručně zastavte fond aplikací ve Správci služby IIS na serveru.

  • Pomocí PowerShellu vytvořte soubor app_offline.htm (vyžaduje se PowerShell 5 nebo novější):

    $pathToApp = 'PATH_TO_APP'
    
    # Stop the AppPool
    New-Item -Path $pathToApp app_offline.htm
    
    # Provide script commands here to deploy the app
    
    # Restart the AppPool
    Remove-Item -Path $pathToApp app_offline.htm
    

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 se svazek klíčů uchovává v paměti, při restartování aplikace se stane následující:

  • 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 pro ochranu dat

    Klíče ochrany dat používané aplikacemi ASP.NET Core se uchovávají v registru mimo aplikace. Pokud chcete zachovat klíče pro určitou aplikaci, vytvořte klíče registru pro daný 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 k uchovávání svého svazku klíčů ochrany dat používala cestu UNC. Ve výchozím nastavení nejsou klíče ochrany dat šifrované. Ujistěte se, že jsou oprávnění k souborům ve sdílené síťové složce omezená 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ý by uživatelům umožnil 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 k dispozici na všech počítačích, na kterých aplikace uživatele běží. Podrobnosti najdete v tématu Konfigurace ochrany dat ASP.NET Core.

  • 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 uchovávají ve složce %LOCALAPPDATA%/ASP.NET/DataProtection-Keys.

    Musí být povolený také atribut setProfileEnvironment fondu 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ě:

  • Nastavení zásad na úrovni počítače pro ochranu dat

    Systém ochrany dat nabízí omezenou podporu pro nastavení výchozích zásad na úrovni počítače pro všechny aplikace, které využívají rozhraní Data Protection API. Další informace najdete v tématu Přehled ochrany dat ASP.NET Core.

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.

V odkazech na statické prostředky v rámci dílčí aplikace by se měla používat notace znaku tildy s lomítkem (~/). 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.

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.

Konfigurace služby IIS pomocí souboru web.config

Ve scénářích služby IIS, které jsou funkční pro aplikace ASP.NET Core s modulem ASP.NET Core, konfiguraci služby IIS ovlivňuje oddíl <system.webServer> souboru web.config. Konfigurace služby IIS je například funkční pro dynamickou kompresi. Pokud je služba IIS na úrovni serveru nakonfigurovaná tak, aby používala dynamickou kompresi, element <urlCompression> v souboru web.config aplikace ASP.NET Core ji může pro danou aplikaci zakázat.

Další informace naleznete v následujících tématech:

Pokud chcete nastavit proměnné prostředí pro jednotlivé aplikace běžící v izolovaných fondech aplikací (podporuje služba IIS 10.0 nebo novější), projděte si část Příkaz AppCmd.exe v tématu Proměnné prostředí <environmentVariables> v referenční dokumentaci ke službě IIS.

Oddíly, které ASP.NET Core nepoužívá

Aplikace ASP.NET Core ke konfiguraci nepoužívají oddíly konfigurace aplikací ASP.NET v souboru web.config:

  • <system.web>
  • <appSettings>
  • <connectionStrings>
  • <location>

Aplikace ASP.NET Core se konfigurují pomocí jiných poskytovatelů konfigurace. Další informace najdete v tématu Konfigurace a Nastavení konfigurace .NET Core za běhu.

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řesňující nastavení fondu aplikací se ujistěte, že je možnost Identity nastavená na hodnotu 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. V oblasti Zadejte názvy objektů k výběru zadejte IIS AppPool\{APP POOL NAME}, kde zástupný symbol {APP POOL NAME} je název fondu aplikací. 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. Například v případě fondu aplikací DefaultAppPool je možné použít následující příkaz:

ICACLS C:\sites\MyWebApp /grant "IIS AppPool\DefaultAppPool":F

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í Režim spouštění je Na vyžádání. Nastavte Režim spouštění na Vždy spuštěno. 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í hodnota nastavení Přednačtení povoleno je False. Nastavte možnost Přednačtení povoleno na hodnotu True. Vyberte OK.
  • Přidejte element <applicationInitialization> s atributem doAppInitAfterRestart nastaveným na hodnotu true mezi elementy <system.webServer> v souboru web.config aplikace:

    <?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 (v minutách) je 20 minut. Nastavte Časový limit nečinnosti (v minutách) na hodnotu 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

Zdroje informací o nasazení pro správce služby IIS

Další materiály

Kurz publikování aplikace ASP.NET Core na serveru služby IIS najdete tady: Publikování aplikace ASP.NET Core ve službě IIS.

Instalace sady pro hosting .NET Core

Podporované operační systémy

Podporovány jsou následující operační systémy:

  • Windows 7 nebo novější
  • Windows Server 2008 R2 nebo novější

Server HTTP.sys (dříve označovaný jako WebListener) nefunguje se službou IIS v konfiguraci reverzního proxy serveru. Použijte server Kestrel.

Informace o hostování v Azure najdete v tématu Nasazování aplikací ASP.NET Core v Azure App Service.

Doprovodné materiály k řešení potíží najdete v tématu Řešení potíží s projekty ASP.NET Core a jejich ladění.

Podporované platformy

Podporují se aplikace publikované pro 32bitové (x86) nebo 64bitové (x64) nasazení. Nasaďte 32bitovou aplikaci s 32bitovou (x86) sadou .NET Core SDK, pokud aplikace:

  • Nevyžaduje větší dostupný adresní prostor virtuální paměti pro 64bitovou aplikaci.
  • Nevyžaduje větší zásobník služby IIS.
  • Nemá nativní 64bitové závislosti.

K publikování 64bitové aplikace použijte 64bitovou (x64) sadu .NET Core SDK. V hostitelském systému musí být k dispozici 64bitový modul runtime.

ASP.NET Core se dodává se serverem Kestrel, což je výchozí multiplatformní server HTTP.

Při použití služby IIS nebo IIS Express se serverem Kestrel aplikace běží v procesu odděleném od pracovního procesu služby IIS (mimoprocesově).

Vzhledem k tomu, že aplikace ASP.NET Core běží v procesu odděleném od pracovního procesu služby IIS, zajišťuje správu procesů modul. Modul zahájí tento proces pro aplikaci ASP.NET Core při přijetí prvního požadavku a v případě vypnutí nebo selhání aplikaci restartuje. Jedná se v podstatě o stejné chování jako u aplikací, které běží vnitroprocesově a jsou spravované Aktivační službou procesů systému Windows (WAS).

Následující diagram znázorňuje vztah mezi službou IIS, modulem ASP.NET Core a mimoprocesově hostovanou aplikací:

ASP.NET Core Module

Požadavky přijdou z webu do ovladače HTTP.sys v režimu jádra. Ovladač přesměruje požadavek do služby IIS na nakonfigurovaném portu webu, obvykle 80 (HTTP) nebo 443 (HTTPS). Modul předá požadavky na server Kestrel na náhodném portu dané aplikace mimo porty 80 a 443.

Modul tento port určí při spuštění prostřednictvím proměnné prostředí a middleware IIS Integration nakonfiguruje server tak, aby naslouchal na adrese http://localhost:{port}. Provedou se další kontroly a požadavky, které nepocházejí z tohoto modulu, se zamítnou. Modul nepodporuje předávání HTTPS, takže se požadavky předávají přes HTTP, i když je služba IIS přijme přes HTTPS.

Jakmile server Kestrel přijme požadavek z modulu, požadavek se odešle do kanálu middlewaru ASP.NET Core. Kanál middlewaru požadavek zpracuje a předá ho jako instanci HttpContext do logiky aplikace. Middleware přidaný integrací služby IIS aktualizuje schéma, vzdálenou IP adresu a základ cesty k účtu pro přesměrování požadavku na server Kestrel. Odpověď aplikace se předá zpět do služby IIS, která ji odešle klientovi HTTP, který požadavek inicioval.

Metoda CreateDefaultBuilder nakonfiguruje server Kestrel jako webový server a umožní integraci služby IIS tím, že nakonfiguruje základní cestu a port pro modul ASP.NET Core.

Modul ASP.NET Core vygeneruje dynamický port, který se přiřadí procesu na pozadí. Metoda CreateDefaultBuilder zavolá metodu UseIISIntegration. Metoda UseIISIntegration nakonfiguruje server Kestrel tak, aby naslouchal na dynamickém portu a IP adrese místního hostitele (127.0.0.1). Pokud je dynamický port 1234, server Kestrel naslouchá na adrese 127.0.0.1:1234. Tato konfigurace nahradí ostatní konfigurace adresy URL z následujících zdrojů:

Při používání modulu se nevyžaduje volání metody UseUrls ani rozhraní KestrelListen API. Pokud se volá metoda UseUrls nebo rozhraní Listen API, Kestrel naslouchá na zadaném portu pouze v případě, že je aplikace spuštěná bez služby IIS.

Doprovodné materiály ke konfiguraci modulu ASP.NET Core najdete v tématu Modul ASP.NET Core (ANCM) pro službu IIS.

Další informace o hostování najdete v části Hostitel v ASP.NET Core.

Konfigurace aplikací

Povolení komponent IISIntegration

Pokud chcete povolit integraci služby IIS, při sestavování hostitele v metodě CreateWebHostBuilder (Program.cs) zavolejte metodu CreateDefaultBuilder:

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        ...

Další informace o metodě CreateDefaultBuilder najdete v tématu Webový hostitel ASP.NET Core.

Možnosti služby IIS

Možnost Výchozí Nastavení
AutomaticAuthentication true Pokud je nastavená hodnota true, server služby IIS nastaví objekt HttpContext.User, který se ověřuje pomocí Integrovaného ověřování Windows. Pokud je nastavená hodnota false, server pro objekt HttpContext.User pouze poskytne identitu a bude reagovat na explicitní požadavky třídy AuthenticationScheme. Aby fungovala možnost AutomaticAuthentication, ve službě IIS musí být povolené Integrované ověřování Windows. Další informace najdete v tématu Integrované ověřování Windows.
AuthenticationDisplayName null Nastaví zobrazovaný název, který se zobrazí uživatelům na přihlašovacích stránkách.

Pokud chcete nakonfigurovat možnosti služby IIS, vložte konfiguraci služby pro třídu IISOptions do souboru ConfigureServices. Následující příklad zabrání aplikaci vyplnit hodnotu HttpContext.Connection.ClientCertificate:

services.Configure<IISOptions>(options => 
{
    options.ForwardClientCertificate = false;
});
Možnost Výchozí Nastavení
AutomaticAuthentication true Pokud je nastavená hodnota true, middleware IIS Integration nastaví objekt HttpContext.User, který se ověřuje pomocí Integrovaného ověřování Windows. Pokud je nastavená hodnota false, middleware pro objekt HttpContext.User pouze poskytne identitu a bude reagovat na explicitní požadavky třídy AuthenticationScheme. Aby fungovala možnost AutomaticAuthentication, ve službě IIS musí být povolené Integrované ověřování Windows. Další informace najdete v tématu Integrované ověřování Windows.
AuthenticationDisplayName null Nastaví zobrazovaný název, který se zobrazí uživatelům na přihlašovacích stránkách.
ForwardClientCertificate true Pokud je nastavená hodnota true a je k dispozici hlavička požadavku MS-ASPNETCORE-CLIENTCERT, vyplní se hodnota HttpContext.Connection.ClientCertificate.

Scénáře týkající se proxy serveru a nástroje pro vyrovnávání zatížení

Middleware IIS Integration, který konfiguruje middleware Forwarded Headers, a modul ASP.NET Core se konfigurují tak, aby předávaly schéma (HTTP/HTTPS) a vzdálenou IP adresu, odkud požadavek pochází. Aplikace hostované za dalšími proxy servery a nástroji pro vyrovnávání zatížení můžou vyžadovat další konfiguraci. Další informace najdete v tématu Konfigurace ASP.NET Core pro práci s proxy servery a nástroji pro vyrovnávání zatížení.

Soubor web.config

V souboru web.config se konfiguruje modul ASP.NET Core. 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 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.

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.

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

Transformace souboru web.config

Pokud potřebujete při publikování transformovat soubor web.config (například nastavit proměnné prostředí na základě konfigurace, profilu nebo prostředí), projděte si téma Transformace souboru web.config.

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.

Instalace sady pro hosting .NET Core

Nainstalujte v hostitelském systému sadu pro hosting .NET Core. Tato sada nainstaluje modul runtime .NET, knihovnu .NET Core a modul ASP.NET Core. Modul umožňuje provoz aplikací ASP.NET Core za službou IIS.

Důležité

V případě instalace sady pro hosting před instalací služby IIS je potřeba instalaci sady připravit. Po dokončení instalace služby IIS znovu spusťte instalační program sady pro hosting.

Pokud se sada pro hosting nainstaluje po instalaci 64bitové (x64) verze .NET Core, může se zdát, že sady SDK chybí (Nezjistily se žádné sady SDK). Pokud chcete tento problém vyřešit, projděte si téma Řešení potíží s projekty ASP.NET Core a jejich ladění.

Stažení

  1. Přejděte na stránku Stáhnout .NET Core.
  2. Vyberte požadovanou verzi .NET Core.
  3. Ve sloupci Spouštění aplikací – Modul runtime vyhledejte řádek s požadovanou verzí modulu runtime .NET Core.
  4. Stáhněte si instalační program pomocí odkazu Sada pro hosting.

Upozorňující

Některé instalační programy obsahují verze po konci životnosti (EOL), které už Microsoft nepodporuje. Další informace najdete v části věnované zásadám podpory.

Instalace sady pro hosting

  1. Spusťte na serveru instalační program. Při spuštění instalačního programu z příkazového prostředí správce jsou k dispozici následující parametry:

    • OPT_NO_ANCM=1: Přeskočí se instalace modulu ASP.NET Core.
    • OPT_NO_RUNTIME=1: Přeskočí se instalace modulu runtime .NET Core. Používá se v případě, že je server hostitelem pouze samostatných nasazení (SCD).
    • OPT_NO_SHAREDFX=1: Přeskočí se instalace sdílené architektury ASP.NET (modul runtime ASP.NET). Používá se v případě, že je server hostitelem pouze samostatných nasazení (SCD).
    • OPT_NO_X86=1: Přeskočí se instalace modulů runtime x86. Tento parametr použijte, pokud víte, že nebudete hostovat 32bitové aplikace. Pokud existuje možnost, že budete v budoucnu hostovat 32bitové i 64bitové aplikace, nepoužívejte tento parametr a nainstalujte oba moduly runtime.
    • OPT_NO_SHARED_CONFIG_CHECK=1: Zakáže se kontrola používání sdílené konfigurace služby IIS, pokud je sdílená konfigurace (applicationHost.config) na stejném počítači jako instalace služby IIS. Tento parametr je k dispozici pouze v instalačních programech sady pro hostování ASP.NET Core 2.2 nebo novější verze. Další informace najdete v tématu Modul ASP.NET Core (ANCM) pro službu IIS.
  2. Restartujte systém nebo v příkazovém prostředí spusťte následující příkazy:

    net stop was /y
    net start w3svc
    

    Při restartování služby IIS se zachytí změna systémové cesty, což je proměnná prostředí PATH, kterou provedl instalační program.

Při instalaci sady pro hosting není nutné ručně zastavovat jednotlivé weby ve službě IIS. Hostované aplikace (weby služby IIS) se restartují při restartování služby IIS. Aplikace se znovu spustí při přijetí prvního požadavku, včetně požadavku z modulu Inicializace aplikace.

ASP.NET Core u verzí oprav balíčků sdílené architektury uplatňuje dopředné posouvání. Když se aplikace hostované službou IIS restartují spolu se službou IIS, při přijetí prvního požadavku se aplikace načtou s nejnovější verzí oprav balíčků, na které odkazují. Pokud se služba IIS nerestartuje, aplikace se restartují a dojde u nich k dopřednému posunu po recyklaci jejich pracovních procesů a přijetí prvního požadavku.

Poznámka:

Informace o sdílené konfiguraci služby IIS najdete v tématu Modul ASP.NET Core se sdílenou konfigurací služby IIS.

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. K instalaci Nasazení webu použijte nástroj Instalace webové platformy (WebPI) nebo získejte instalační program přímo z webu Microsoft Download Center. Upřednostňovanou metodou je použít nástroj WebPI. WebPI nabízí samostatnou instalaci a konfiguraci pro poskytovatele hostingu.

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.

  7. ASP.NET Core 2.2 nebo novější: V případě 64bitového (x64) samostatného nasazení, které využívá model vnitroprocesového hostování, zakažte fond aplikací pro 32bitové (x86) procesy.

    V části Správce služby IIS >Fondy aplikací na bočním panelu Akce vyberte Nastavit výchozí hodnoty fondu aplikací nebo Upřesňující nastavení. Vyhledejte možnost Povolit 32bitové aplikace a nastavte ji na hodnotu False. Toto nastavení nemá vliv na aplikace nasazené pro mimoprocesové hostování.

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

Nasazení aplikace

Nasaďte aplikaci ve službě IIS do složky ve fyzické cestě, kterou jste vytvořili v části Vytvoření webu služby IIS. K nasazení doporučujeme použít Nasazení webu, ale existují různé možnosti, jak přesunout aplikaci ze složky publish projektu do složky pro nasazení v hostitelském systému.

Nasazení webu s využitím sady Visual Studio

Informace o vytvoření profilu publikování pro použití s Nasazením webu najdete v tématu Profily publikování sady Visual Studio pro nasazení aplikace ASP.NET Core. Pokud poskytovatel hostingu nabízí profil publikování nebo podporuje jeho vytvoření, stáhněte si jeho profil a importujte ho v dialogovém okně Publikovat sady Visual Studio:

Publish dialog page

Nasazení webu mimo sadu Visual Studio

Nasazení webu je možné používat také mimo sadu Visual Studio prostřednictvím příkazového řádku. Další informace najdete v tématu Nástroj Nasazení webu.

Alternativy k Nasazení webu

K přesunu aplikace do hostitelského systému můžete použít několik různých metod, mezi které patří ruční kopírování, Xcopy, Robocopy nebo PowerShell.

Další informace o nasazení ASP.NET Core ve službě IIS najdete v části Zdroje informací o nasazení pro správce služby IIS.

Procházení webu

Po nasazení aplikace v hostitelském systému odešlete požadavek na některý z veřejných koncových bodů aplikace.

V následujícím příkladu je web vázaný na název hostitelewww.mysite.com služby IIS na portu80. Požadavek se odešle na adresu http://www.mysite.com:

The Microsoft Edge browser has loaded the IIS startup page.

Uzamčené soubory nasazení

Když je aplikace spuštěná, soubory ve složce pro nasazení jsou uzamčené. Uzamčené soubory není možné během nasazování přepsat. Pokud chcete uvolnit uzamčené soubory v nasazení, jedním z následujících způsobů zastavte fond aplikací:

  • Použijte Nasazení webu a do souboru projektu přidejte odkaz na Microsoft.NET.Sdk.Web. Do kořenového adresáře webové aplikace se umístí soubor app_offline.htm. Pokud existuje tento soubor, modul ASP.NET Core aplikaci řádně vypne a během nasazování zobrazuje soubor app_offline.htm. Další informace najdete v referenčních informacích ke konfiguraci modulu ASP.NET Core.

  • Ručně zastavte fond aplikací ve Správci služby IIS na serveru.

  • Pomocí PowerShellu vytvořte soubor app_offline.htm (vyžaduje se PowerShell 5 nebo novější):

    $pathToApp = 'PATH_TO_APP'
    
    # Stop the AppPool
    New-Item -Path $pathToApp app_offline.htm
    
    # Provide script commands here to deploy the app
    
    # Restart the AppPool
    Remove-Item -Path $pathToApp app_offline.htm
    
    

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 se svazek klíčů uchovává v paměti, při restartování aplikace se stane následující:

  • 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 pro ochranu dat

    Klíče ochrany dat používané aplikacemi ASP.NET Core se uchovávají v registru mimo aplikace. Pokud chcete zachovat klíče pro určitou aplikaci, vytvořte klíče registru pro daný 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 k uchovávání svého svazku klíčů ochrany dat používala cestu UNC. Ve výchozím nastavení nejsou klíče ochrany dat šifrované. Ujistěte se, že jsou oprávnění k souborům ve sdílené síťové složce omezená 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ý by uživatelům umožnil 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 k dispozici na všech počítačích, na kterých aplikace uživatele běží. Podrobnosti najdete v tématu Konfigurace ochrany dat ASP.NET Core.

  • 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 uchovávají ve složce %LOCALAPPDATA%/ASP.NET/DataProtection-Keys.

    Musí být povolený také atribut setProfileEnvironment fondu 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ě:

  • Nastavení zásad na úrovni počítače pro ochranu dat

    Systém ochrany dat nabízí omezenou podporu pro nastavení výchozích zásad na úrovni počítače pro všechny aplikace, které využívají rozhraní Data Protection API. Další informace najdete v tématu Přehled ochrany dat ASP.NET Core.

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.

Dílčí aplikace by neměla obsahovat modul ASP.NET Core jako obslužnou rutinu. Pokud se modul přidá jako obslužná rutina v souboru web.config dílčí aplikace, při pokusu o přechodu do dílčí aplikace se zobrazí vnitřní chyba serveru 500.19 s odkazem na chybný konfigurační soubor.

Následující příklad ukazuje publikovaný soubor web.config dílčí aplikace ASP.NET Core:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <aspNetCore processPath="dotnet" 
      arguments=".\MyApp.dll" 
      stdoutLogEnabled="false" 
      stdoutLogFile=".\logs\stdout" />
  </system.webServer>
</configuration>

Pokud v rámci aplikace ASP.NET Core hostujete dílčí aplikaci v jiném jazyce než ASP.NET Core, explicitně odeberte zděděnou obslužnou rutinu v souboru web.config dílčí aplikace:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <remove name="aspNetCore" />
    </handlers>
    <aspNetCore processPath="dotnet" 
      arguments=".\MyApp.dll" 
      stdoutLogEnabled="false" 
      stdoutLogFile=".\logs\stdout" />
  </system.webServer>
</configuration>

V odkazech na statické prostředky v rámci dílčí aplikace by se měla používat notace znaku tildy s lomítkem (~/). 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.

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.

Konfigurace služby IIS pomocí souboru web.config

Ve scénářích služby IIS, které jsou funkční pro aplikace ASP.NET Core s modulem ASP.NET Core, konfiguraci služby IIS ovlivňuje oddíl <system.webServer> souboru web.config. Konfigurace služby IIS je například funkční pro dynamickou kompresi. Pokud je služba IIS na úrovni serveru nakonfigurovaná tak, aby používala dynamickou kompresi, element <urlCompression> v souboru web.config aplikace ASP.NET Core ji může pro danou aplikaci zakázat.

Další informace naleznete v následujících tématech:

Pokud chcete nastavit proměnné prostředí pro jednotlivé aplikace běžící v izolovaných fondech aplikací (podporuje služba IIS 10.0 nebo novější), projděte si část Příkaz AppCmd.exe v tématu Proměnné prostředí <environmentVariables> v referenční dokumentaci ke službě IIS.

Oddíly, které ASP.NET Core nepoužívá

Aplikace ASP.NET Core ke konfiguraci nepoužívají oddíly konfigurace aplikací ASP.NET 4.x v souboru web.config:

  • <system.web>
  • <appSettings>
  • <connectionStrings>
  • <location>

Aplikace ASP.NET Core se konfigurují pomocí jiných poskytovatelů konfigurace. Další informace najdete v tématu Konfigurace.

Fondy aplikací

Při hostování více webů na jednom serveru doporučujeme jednotlivé aplikace 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á tato konfigurace. 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řesňující nastavení fondu aplikací se ujistěte, že je možnost Identity nastavená na hodnotu 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. V oblasti Zadejte názvy objektů k výběru zadejte IIS AppPool\<název_fondu_aplikací>. 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\<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. Například v případě fondu aplikací DefaultAppPool je možné použít následující příkaz:

ICACLS C:\sites\MyWebApp /grant "IIS AppPool\DefaultAppPool":F

Další informace najdete v tématu icacls.

Podpora HTTP/2

HTTP/2 se podporuje u mimoprocesových nasazení, která splňují následující základní požadavky:

  • 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.
  • Cílová architektura: Nevztahuje se na mimoprocesová nasazení, protože připojení HTTP/2 zcela zajišťuje služba IIS.
  • Připojení přes protokol TLS 1.2 nebo novější

Pokud se naváže připojení HTTP/2, vlastnost HttpRequest.Protocol bude obsahovat hodnotu HTTP/1.1.

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.

Zdroje informací o nasazení pro správce služby IIS

Další materiály