Hostování ASP.NET Core ve Windows pomocí služby IIS
Poznámka:
Toto není nejnovější verze tohoto článku. Aktuální verzi najdete v tomto článku ve verzi .NET 9.
Upozorňující
Tato verze ASP.NET Core se už nepodporuje. Další informace najdete v zásadách podpory .NET a .NET Core. Aktuální verzi najdete v tomto článku ve verzi .NET 9.
Důležité
Tyto informace se týkají předběžného vydání produktu, který může být podstatně změněn před komerčním vydáním. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Aktuální verzi najdete v tomto článku ve verzi .NET 9.
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
- Dokumentace ke službě IIS
- Začínáme se Správcem služby IIS ve službě IIS
- Vývoj aplikací .NET Core
- Modul ASP.NET Core (ANCM) pro službu IIS
- Adresářová struktura ASP.NET Core
- Moduly služby IIS s ASP.NET Core
- Řešení potíží s ASP.NET Core v Azure App Service a ve službě IIS
- Řešení běžných chyb v Azure App Service a ve službě IIS souvisejících s ASP.NET Core
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).
- 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í:
- Požadavek přijde z webu do ovladače HTTP.sys v režimu jádra.
- Ovladač přesměruje nativní požadavek do služby IIS na nakonfigurovaném portu webu, obvykle 80 (HTTP) nebo 443 (HTTPS).
- 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:
- 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. - Odpověď aplikace se předá zpět do služby IIS prostřednictvím serveru HTTP služby IIS.
- 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í:
- Požadavky přijdou z webu do ovladače HTTP.sys v režimu jádra.
- Ovladač přesměruje požadavky do služby IIS na nakonfigurovaném portu webu. Nakonfigurovaný port je obvykle 80 (HTTP) nebo 443 (HTTPS).
- 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 false server poskytuje identity pouze výzvu HttpContext.User a reaguje na výzvy, pokud je AuthenticationScheme výslovně požaduje . 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 false middleware poskytuje identity pouze výzvu HttpContext.User a reaguje na výzvy, pokud je AuthenticationScheme výslovně požaduje . 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.
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).
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.
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.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.
Přejděte do části Ovládací panely>Programy>Programy a funkce>Zapnout nebo vypnout funkce systému Windows (na levé straně obrazovky).
Otevřete uzel Internetová informační služba. Otevřete uzel Nástroje webové správy.
Zaškrtněte políčko u možnosti Konzola pro správu služby IIS.
Zaškrtněte políčko u možnosti Webové služby.
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.Pokud instalace služby IIS vyžaduje restartování, restartujte systém.
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:
- Přejděte na stránku Stáhnout .NET Core.
- Vyberte požadovanou verzi .NET Core.
- Ve sloupci Spouštění aplikací – Modul runtime vyhledejte řádek s požadovanou verzí modulu runtime .NET Core.
- 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
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.
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. Pokud chcete nainstalovat nasazení webu, použijte instalační program webové platformy (WebPI) nebo si přečtěte informace o stažení služby IIS: Nasazení webu. 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
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.
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.
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:
Upozorňující
Vazby nejvyšší úrovně se zástupnými znaky (
http://*:80/
ahttp://+: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).Pod uzlem serveru vyberte Fondy aplikací.
Klikněte pravým tlačítkem na fond aplikací webu a v místní nabídce vyberte Základní nastavení.
V okně Upravit fond aplikací nastavte verzi .NET CLR na hodnotu Bez spravovaného kódu:
ASP.NET Core běží v samostatném procesu a spravuje modul runtime. ASP.NET Core nespoléhá na načítání desktopového modulu CLR (.NET CLR). 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.
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
.
Ověřte, že model identity procesu má správná oprávnění.
Pokud se výchozí hodnota identity fondu aplikací (modelIdentity> procesu) změní z ApplicationPoolIdentity na jinouidentity, ověřte, že nový identity 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:
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ázán na název hostitele služby IIS na portu 80
.www.mysite.com
Požadavek se odešle na adresu http://www.mysite.com
:
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í souborapp_offline.htm
. Pokud existuje tento soubor, modul ASP.NET Core aplikaci řádně vypne a během nasazování zobrazuje souborapp_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 a soubory cookie ASP.NET Core MVC TempData.
Pokud chcete v rámci služby IIS nakonfigurovat ochranu dat pro zachování svazku klíčů, použijte jeden z následujících postupů:
Vytvoření klíčů registru 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í pomocí rest ROZHRANÍ DPAPI s klíčem 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ěží. Certifikát X509 lze použít k ochraně klíčů na adrese rest. 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á hodnotaTrue
, 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
jetrue
. V některých scénářích (například v operačním systému Windows) je atributsetProfileEnvironment
nastavený na hodnotufalse
. Pokud se klíče neuchovávají v adresáři profilu uživatele podle očekávání:- Přejděte do složky %windir%/system32/inetsrv/config.
- Otevřete soubor applicationHost.config.
- Vyhledejte element
<system.applicationHost><applicationPools><applicationPoolDefaults><processModel>
. - Ověřte, že není k dispozici atribut
setProfileEnvironment
, aby se použila výchozí hodnotatrue
, nebo explicitně nastavte hodnotu tohoto atributu natrue
.
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. V kódu nakonfigurujte ochranu dat.
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:
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).
Přidejte kořenový web s dílčí aplikací v podsložce do Správce služby IIS.
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.
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:
- Referenční informace ke konfiguraci elementu <system.webServer>
- Modul ASP.NET Core (ANCM) pro službu IIS
- Moduly služby IIS s ASP.NET Core
Pokud chcete nastavit proměnné prostředí pro jednotlivé aplikace 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 fondu identity aplikací umožňuje aplikaci spouštět pod jedinečným účtem bez nutnosti vytvářet a spravovat domény nebo místní účty. Ve službě IIS 8.0 nebo novější pracovní proces správce služby IIS (WAS) ve výchozím nastavení vytvoří virtuální účet s názvem nového fondu aplikací a spouští pracovní procesy fondu aplikací pod tímto účtem. V konzole pro správu služby IIS v části Upřesnit nastavení fondu aplikací se ujistěte, že Identity je nastavená na použití ApplicationPoolIdentity:
Proces správy služby IIS vytvoří v systému zabezpečení Windows zabezpečený identifikátor s názvem fondu aplikací. Prostředky je možné zabezpečit pomocí tohoto identitysouboru . Nejedná identity se ale o skutečný uživatelský účet a nezobrazuje se v konzole pro správu uživatelů systému Windows.
Pokud pracovní proces služby IIS vyžaduje k aplikaci přístup se zvýšenými oprávněními, upravte seznam řízení přístupu (ACL) pro adresář obsahující aplikaci:
Otevřete Průzkumníka Windows a přejděte do příslušného adresáře.
Klikněte na adresář pravým tlačítkem a vyberte Vlastnosti.
Na kartě Zabezpečení vyberte tlačítko Upravit a pak tlačítko Přidat.
Vyberte tlačítko Umístění a ujistěte se, že je vybraný systém.
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žijteIIS AppPool\DefaultAppPool
. Po výběru tlačítka Kontrola názvů se v oblasti názvů objektů označí hodnotaDefaultAppPool
. Název fondu aplikací není možné zadat přímo do oblasti názvů objektů. Při kontrole názvu objektu použijte formátIIS AppPool\{APP POOL NAME}
, kde zástupný symbol{APP POOL NAME}
je název fondu aplikací.Vyberte OK.
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: Aplikace hostované vnitroprocesově nebo mimoprocesově je možné nakonfigurovat tak, aby se automaticky spustily v případě restartování pracovního procesu nebo serveru.
- Časový limit nečinnosti: Aplikace hostované vnitroprocesově je možné nakonfigurovat tak, aby u nich během období nečinnosti nedošlo k vypršení časového limitu.
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ě:
- Přejděte do části Ovládací panely>Programy>Programy a funkce>Zapnout nebo vypnout funkce systému Windows (na levé straně obrazovky).
- Otevřete uzel Internetová informační služba>Webové služby>Funkce pro vývoj aplikací.
- Zaškrtněte políčko u možnosti Inicializace aplikace.
Windows Server 2008 R2 nebo novější:
- Otevřete Průvodce přidáním rolí a funkcí.
- Na panelu Vybrat služby rolí otevřete uzel Vývoj aplikací.
- 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:
- Na panelu Připojení vyberte Fondy aplikací.
- V seznamu klikněte pravým tlačítkem na fond aplikací aplikace a vyberte Upřesňující nastavení.
- 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.
- Na panelu Připojení otevřete uzel Weby.
- Klikněte pravým tlačítkem na aplikaci a vyberte Spravovat web>Upřesňující nastavení.
- 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 atributemdoAppInitAfterRestart
nastaveným na hodnotutrue
mezi elementy<system.webServer>
v souboruweb.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í:
- Na panelu Připojení vyberte Fondy aplikací.
- V seznamu klikněte pravým tlačítkem na fond aplikací aplikace a vyberte Upřesňující nastavení.
- 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.
- 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ů:
- Testujte aplikaci příkazem Ping z externí služby, aby zůstala spuštěná.
- Pokud aplikace hostuje pouze služby na pozadí, nepoužívejte k hostování službu IIS, ale použijte k hostování aplikace ASP.NET Core službu Windows.
Další zdroje informací o modulu Inicializace aplikace a časovém limitu nečinnosti
- Inicializace aplikace služby IIS 8.0
- Inicializace aplikace <applicationInitialization>
- Nastavení modelu zpracování pro fond aplikací <processModel>
Zdroje informací o nasazení pro správce služby IIS
- Dokumentace ke službě IIS
- Začínáme se Správcem služby IIS ve službě IIS
- Vývoj aplikací .NET Core
- Modul ASP.NET Core (ANCM) pro službu IIS
- Adresářová struktura ASP.NET Core
- Moduly služby IIS s ASP.NET Core
- Řešení potíží s ASP.NET Core v Azure App Service a ve službě IIS
- Řešení běžných chyb v Azure App Service a ve službě IIS souvisejících s ASP.NET Core
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í:
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í Kestrel Listen
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 false server poskytuje identity pouze výzvu HttpContext.User a reaguje na výzvy, pokud je AuthenticationScheme výslovně požaduje . 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 false middleware poskytuje identity pouze výzvu HttpContext.User a reaguje na výzvy, pokud je AuthenticationScheme výslovně požaduje . 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.
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).
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.
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.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.
Přejděte do části Ovládací panely>Programy>Programy a funkce>Zapnout nebo vypnout funkce systému Windows (na levé straně obrazovky).
Otevřete uzel Internetová informační služba. Otevřete uzel Nástroje webové správy.
Zaškrtněte políčko u možnosti Konzola pro správu služby IIS.
Zaškrtněte políčko u možnosti Webové služby.
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.Pokud instalace služby IIS vyžaduje restartování, restartujte systém.
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í.
Stáhnout
- Přejděte na stránku Stáhnout .NET Core.
- Vyberte požadovanou verzi .NET Core.
- Ve sloupci Spouštění aplikací – Modul runtime vyhledejte řádek s požadovanou verzí modulu runtime .NET Core.
- 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
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.
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 instalační program webové platformy (WebPI) nebo soubory ke stažení služby IIS: Nasazení webu. 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
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.
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.
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:
Upozorňující
Vazby nejvyšší úrovně se zástupnými znaky (
http://*:80/
ahttp://+: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).Pod uzlem serveru vyberte Fondy aplikací.
Klikněte pravým tlačítkem na fond aplikací webu a v místní nabídce vyberte Základní nastavení.
V okně Upravit fond aplikací nastavte verzi .NET CLR na hodnotu Bez spravovaného kódu:
ASP.NET Core běží v samostatném procesu a spravuje modul runtime. ASP.NET Core nespoléhá na načítání desktopového modulu CLR (.NET CLR) – 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.
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í.Ověřte, že model identity procesu má správná oprávnění.
Pokud se výchozí hodnota identity fondu aplikací (modelIdentity> procesu) změní z ApplicationPoolIdentity na jinouidentity, ověřte, že nový identity 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:
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ázán na název hostitele služby IIS na portu 80
.www.mysite.com
Požadavek se odešle na adresu http://www.mysite.com
:
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í souborapp_offline.htm
. Pokud existuje tento soubor, modul ASP.NET Core aplikaci řádně vypne a během nasazování zobrazuje souborapp_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 a soubory cookie ASP.NET Core MVC TempData.
Pokud chcete v rámci služby IIS nakonfigurovat ochranu dat pro zachování svazku klíčů, použijte jeden z následujících postupů:
Vytvoření klíčů registru 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í pomocí rest ROZHRANÍ DPAPI s klíčem 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ěží. Certifikát X509 lze použít k ochraně klíčů na adrese rest. 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á hodnotaTrue
, 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
jetrue
. V některých scénářích (například v operačním systému Windows) je atributsetProfileEnvironment
nastavený na hodnotufalse
. Pokud se klíče neuchovávají v adresáři profilu uživatele podle očekávání:- Přejděte do složky %windir%/system32/inetsrv/config.
- Otevřete soubor applicationHost.config.
- Vyhledejte element
<system.applicationHost><applicationPools><applicationPoolDefaults><processModel>
. - Ověřte, že není k dispozici atribut
setProfileEnvironment
, aby se použila výchozí hodnotatrue
, nebo explicitně nastavte hodnotu tohoto atributu natrue
.
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. V kódu nakonfigurujte ochranu dat.
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:
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).
Přidejte kořenový web s dílčí aplikací v podsložce do Správce služby IIS.
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.
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:
- Referenční informace ke konfiguraci elementu <system.webServer>
- Modul ASP.NET Core (ANCM) pro službu IIS
- Moduly služby IIS s ASP.NET Core
Pokud chcete nastavit proměnné prostředí pro jednotlivé aplikace 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 fondu identity aplikací umožňuje aplikaci spouštět pod jedinečným účtem bez nutnosti vytvářet a spravovat domény nebo místní účty. Ve službě IIS 8.0 nebo novější pracovní proces správce služby IIS (WAS) ve výchozím nastavení vytvoří virtuální účet s názvem nového fondu aplikací a spouští pracovní procesy fondu aplikací pod tímto účtem. V konzole pro správu služby IIS v části Upřesnit nastavení fondu aplikací se ujistěte, že Identity je nastavená na použití ApplicationPoolIdentity:
Proces správy služby IIS vytvoří v systému zabezpečení Windows zabezpečený identifikátor s názvem fondu aplikací. Prostředky je možné zabezpečit pomocí tohoto identitysouboru . Nejedná identity se ale o skutečný uživatelský účet a nezobrazuje se v konzole pro správu uživatelů systému Windows.
Pokud pracovní proces služby IIS vyžaduje k aplikaci přístup se zvýšenými oprávněními, upravte seznam řízení přístupu (ACL) pro adresář obsahující aplikaci:
Otevřete Průzkumníka Windows a přejděte do příslušného adresáře.
Klikněte na adresář pravým tlačítkem a vyberte Vlastnosti.
Na kartě Zabezpečení vyberte tlačítko Upravit a pak tlačítko Přidat.
Vyberte tlačítko Umístění a ujistěte se, že je vybraný systém.
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í>.
Vyberte OK.
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
- Dokumentace ke službě IIS
- Začínáme se Správcem služby IIS ve službě IIS
- Vývoj aplikací .NET Core
- Modul ASP.NET Core (ANCM) pro službu IIS
- Adresářová struktura ASP.NET Core
- Moduly služby IIS s ASP.NET Core
- Řešení potíží s ASP.NET Core v Azure App Service a ve službě IIS
- Řešení běžných chyb v Azure App Service a ve službě IIS souvisejících s ASP.NET Core