hostování ASP.NET Core v Windows se službou IIS

Internetová informační služba (IIS) je flexibilní, zabezpečený a spravovatelný webový Server pro hostování webových aplikací, včetně 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 nasazení 32 (x86) nebo 64-bit (x64). Nasazení 32 aplikace s 32 (x86) .NET Core SDK, pokud aplikace:

  • Vyžaduje větší dostupný adresní prostor virtuální paměti pro 64 aplikaci.
  • Vyžaduje větší velikost zásobníku služby IIS.
  • Má 64 nativní závislosti.

instalace modulu ASP.NET Core/hostitelské sady

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

Aktuální instalační program sady hostujících sad .NET Core (přímé stahování)

další informace o tom, jak nainstalovat modul ASP.NET Core nebo instalovat jiné verze, najdete v tématu instalace hostující sady .net Core.

Začínáme

Informace o tom, jak začít hostovat web ve službě IIS, najdete v příručce Začínáme.

Informace o tom, jak začít s hostováním webu v Azure App Services, najdete v našem nasazení do Azure App Service Průvodce.

Prostředky nasazení pro správce služby IIS

Překrytí recyklace

Obecně doporučujeme použít pro nasazení s nulovými výpadky vzor, jako je například nasazení Blue-zelená . Funkce, jako je překrytí aplikace s podporou recyklování, ale nezaručuje, že můžete provést nasazení s nulovými výpadky. další informace najdete v tomto GitHub problému.

Volitelné klientské certifikáty

Informace o aplikacích, které musí chránit podmnožinu aplikace s certifikátem, najdete v tématu volitelné klientské certifikáty.

Další zdroje informací

kurz týkající se publikování ASP.NET Core aplikace na server služby IIS najdete v tématu Publikování ASP.NET Core ve službě IIS .

Instalace hostující sady .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ší

ServerHTTP.sys (dříve označovaný jako weblisten) nefunguje v konfiguraci reverzního proxy serveru pomocí služby IIS. Použijte Kestrel Server.

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

Pokyny k řešení potíží najdete v tématu řešení potíží a ladění ASP.NET Corech projektů .

Podporované platformy

Podporují se aplikace publikované pro nasazení 32 (x86) nebo 64-bit (x64). Nasazení 32 aplikace s 32 (x86) .NET Core SDK, pokud aplikace:

  • Vyžaduje větší dostupný adresní prostor virtuální paměti pro 64 aplikaci.
  • Vyžaduje větší velikost zásobníku služby IIS.
  • Má 64 nativní závislosti.

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

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

Modely hostingu

Model hostování v procesu

při použití hostování v rámci procesu ASP.NET Core aplikace běží ve stejném procesu jako jeho pracovní proces služby IIS. Hostování v rámci procesů poskytují lepší výkon než hostování mimo procesy, protože požadavky nejsou proxy serverem přes adaptér zpětné smyčky, síťové rozhraní, které vrátí odchozí síťový provoz zpátky do stejného počítače. služba IIS zpracovává správu procesů pomocí služby was (Windows process Activation Service).

modul ASP.NET Core:

  • Provede inicializaci aplikace.
    • Načte CoreCLR.
    • Volání Program.Main .
  • Zpracovává životnost nativního požadavku služby IIS.

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

ASP.NET Core Modul ve scénáři hostování v rámci procesu

  1. Požadavek přijde z webu do ovladače HTTP.sys režimu jádra.
  2. Ovladač směruje nativní požadavek na IIS na konfigurovaném portu webu, obvykle 80 (HTTP) nebo 443 (HTTPS).
  3. modul ASP.NET Core obdrží nativní požadavek a předá ho k serveru HTTP služby IIS ( IISHttpServer ). HTTP server IIS je vnitroprocesové implementace v rámci procesového serveru pro službu IIS, která převádí požadavek z nativního na spravovanou.

Poté, co server HTTP služby IIS zpracuje požadavek:

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

Hostování v procesu je výslovný souhlas pro existující aplikace. webové šablony ASP.NET Core používají model hostování v rámci procesu.

CreateDefaultBuilder přidá IServer instanci voláním UseIIS metody pro spuštění CoreCLR a hostování aplikace uvnitř pracovního procesu služby IIS ( w3wp.exe nebo iisexpress.exe ). Testy výkonu označují, že hostování aplikace .NET Core v rámci procesu přináší výrazně vyšší propustnost žádostí v porovnání s hostováním aplikací mimo proces a požadavky na proxy server Kestrel .

Aplikace publikované jako spustitelný soubor s jedním souborem nejde načíst pomocí modelu hostování v rámci procesu.

Model hostování mimo proces

vzhledem k tomu, že ASP.NET Core aplikace běží v procesu odděleném od pracovního procesu služby IIS, modul ASP.NET Core zpracovává správu procesů. modul spustí proces pro aplikaci ASP.NET Core, když první požadavek dorazí a restartuje aplikaci, pokud se ukončí nebo dojde k chybě. to je v podstatě stejné chování jako u aplikací, které běží v procesu, které jsou spravované službou Windows process Activation Service (WAS).

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

ASP.NET Core Modul ve scénáři hostování mimo proces

  1. Požadavky přicházející z webu do ovladače HTTP.sys režimu jádra.
  2. Ovladač směruje požadavky do služby IIS na konfigurovaném portu webu. Nakonfigurovaný port je obvykle 80 (HTTP) nebo 443 (HTTPS).
  3. Modul předá požadavky na Kestrel náhodný port pro aplikaci. Náhodný port není 80 nebo 443.

modul ASP.NET Core určuje port prostřednictvím proměnné prostředí při spuštění. UseIISIntegrationRozšíření nakonfiguruje server tak, aby naslouchal http://localhost:{PORT} . Budou provedeny další kontroly a požadavky, které nepocházejí z modulu, jsou odmítnuty. Modul nepodporuje předávání HTTPS. Požadavky jsou předávány přes protokol HTTP i v případě, že jsou přijímány službou IIS prostřednictvím protokolu HTTPS.

po Kestrel žádosti z modulu se požadavek přepošle do kanálu middleware ASP.NET Core. Kanál middlewaru zpracovává požadavek a předá ho jako HttpContext instanci do logiky aplikace. Middleware, které přidala integrace služby IIS, do schématu, vzdálené IP adresy a pathbase, aby bylo možné tyto požadavky předat Kestrel . Odpověď aplikace se předává zpátky do služby IIS, která je předává zpátky klientovi HTTP, který žádost inicioval.

pokyny ke konfiguraci ASP.NET Core modulu najdete v tématu Modul ASP.NET Core .

Další informace o hostování najdete v tématu hostitel v ASP.NET Core.

Konfigurace aplikací

Povolit komponenty IISIntegration

Při sestavování hostitele v CreateHostBuilder ( Program.cs ) zavolejte CreateDefaultBuilder na Povolit integraci služby IIS:

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

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

Možnosti služby IIS

Model hostování v procesu

Pokud chcete nakonfigurovat možnosti serveru IIS, zahrňte do nástroje konfiguraci služby pro IISServerOptions ConfigureServices . Následující příklad zakáže AutomaticAuthentication:

services.Configure<IISServerOptions>(options => 
{
    options.AutomaticAuthentication = false;
});
Možnost Výchozí Nastavení
AutomaticAuthentication true pokud true Server IIS nastaví ověření HttpContext.User pomocí Windows ověřování. Pokud false Server poskytuje pouze identitu pro HttpContext.User a reaguje na výzvy, pokud je explicitně vyžádala AuthenticationScheme . Windows Pro funkci je třeba povolit ověřování ve službě IIS AutomaticAuthentication . další informace najdete v tématu 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 Zda je povolena synchronní I/O pro HttpContext.Request a HttpContext.Response .
MaxRequestBodySize 30000000 Získá nebo nastaví velikost textu maximálního požadavku pro HttpRequest . Všimněte si, že samotná služba IIS má limit, maxAllowedContentLength který bude zpracován před MaxRequestBodySize nastavením v IISServerOptions . Změna MaxRequestBodySize neovlivní maxAllowedContentLength . Chcete-li zvýšit maxAllowedContentLength , přidejte položku do pole web.config pro nastavení maxAllowedContentLength na vyšší hodnotu. Další podrobnosti najdete v tématu Konfigurace.

Model hostování mimo proces

Pokud chcete nakonfigurovat možnosti služby IIS, zahrňte do nástroje konfiguraci služby pro IISOptions ConfigureServices . Následující příklad zabrání aplikaci v naplnění HttpContext.Connection.ClientCertificate :

services.Configure<IISOptions>(options => 
{
    options.ForwardClientCertificate = false;
});
Možnost Výchozí Nastavení
AutomaticAuthentication true pokud true služba IIS integration middleware nastaví ověření HttpContext.User pomocí Windows ověřování. falseV případě, middleware poskytuje pouze identitu pro HttpContext.User a reaguje na výzvy, pokud je explicitně vyžádala AuthenticationScheme . Windows Pro funkci je třeba povolit ověřování ve službě IIS AutomaticAuthentication . další informace najdete v tématu Windows ověřování .
AuthenticationDisplayName null Nastaví zobrazovaný název, který se zobrazí uživatelům na přihlašovacích stránkách.
ForwardClientCertificate true Pokud true je k MS-ASPNETCORE-CLIENTCERT dispozici hlavička žádosti, HttpContext.Connection.ClientCertificate je naplněna hodnota.

Scénáře proxy serveru a nástroje pro vyrovnávání zatížení

middleware pro integraci služby IIS a modul ASP.NET Core jsou nakonfigurované pro přeposílání:

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

Middleware pro integraci služby IIS konfiguruje middleware předávaných hlaviček.

Pro aplikace hostované za dalšími proxy servery a nástroji pro vyrovnávání zatížení může být vyžadována další konfigurace. další informace najdete v tématu konfigurace ASP.NET Core pro práci se servery proxy a nástroji pro vyrovnávání zatížení.

web.config souborů

web.configsoubor nakonfiguruje modul ASP.NET Core. vytváření, transformace a publikování web.config souboru je zpracováváno MSBuild target ( _TransformWebConfig ) při publikování projektu. Tento cíl je k dispozici v cíle webové sady SDK ( Microsoft.NET.Sdk.Web ). Sada SDK je nastavena v horní části souboru projektu:

<Project Sdk="Microsoft.NET.Sdk.Web">

pokud web.config soubor není v projektu přítomen, vytvoří se soubor se správnými processPath a arguments ke konfiguraci modulu ASP.NET Core a přesunutí do publikovaného výstupu.

pokud web.config je v projektu přítomen soubor, soubor je transformován se správnými processPath a arguments ke konfiguraci modulu ASP.NET Core a přesunutí do publikovaného výstupu. Transformace nemění nastavení konfigurace služby IIS v souboru.

web.configSoubor může poskytovat další nastavení konfigurace služby IIS, která ovládají aktivní moduly IIS. informace o modulech služby iis, které jsou schopné zpracovávat požadavky s ASP.NET Core aplikacemi, najdete v tématu iis modules .

Chcete-li webové sadě SDK zabránit ve transformaci tohoto web.config souboru, použijte <IsTransformWebConfigDisabled> vlastnost v souboru projektu:

<PropertyGroup>
  <IsTransformWebConfigDisabled>true</IsTransformWebConfigDisabled>
</PropertyGroup>

Při zakazování webové sady SDK z transformace souboru processPath arguments by měl být sada a nastavena ručně vývojářem. Další informace naleznete v tématu Modul ASP.NET Core.

web.config umístění souboru

aby bylo možné správně nastavit modul ASP.NET Core , web.config musí být soubor přítomen v kořenové cestě obsahu (obvykle v základní cestě aplikace) nasazené aplikace. Toto je stejné umístění jako fyzická cesta k webu poskytované službě IIS. web.configSoubor se vyžaduje v kořenu aplikace, aby bylo možné publikování více aplikací pomocí nasazení webu.

Citlivé soubory existují na fyzické cestě aplikace, například {ASSEMBLY}.runtimeconfig.json {ASSEMBLY}.xml (dokumentační komentáře XML), a {ASSEMBLY}.deps.json , kde zástupný symbol {ASSEMBLY} je název sestavení. Když web.config je soubor přítomen a lokalita se spouští normálně, služba IIS tyto citlivé soubory po vyžádání neobsluhuje. Pokud web.config soubor chybí, nesprávně pojmenovaný nebo nedokáže nakonfigurovat lokalitu pro normální spuštění, služba IIS může obsluhovat citlivé soubory veřejně.

Tento web.config soubor musí být v nasazení přítomen vždy, správně pojmenován a může nakonfigurovat lokalitu pro normální spuštění. Nikdy neodstraňujte web.config soubor z produkčního nasazení.

Transformace souboru web.config

Pokud potřebujete transformovat web.config při publikování, přečtěte si téma Transformace souboru web.config . Možná budete muset transformovat web.config při publikování a nastavit proměnné prostředí na základě konfigurace, profilu nebo prostředí.

Konfigurace služby IIS

Windows Serverové operační systémy

Povolte roli serveru webový server (IIS) a vytvořte služby rolí.

  1. Použijte průvodce přidáním rolí a funkcí z nabídky Správa nebo odkazu v Správce serveru. V kroku role serveru zaškrtněte políčko webový server (IIS).

    V kroku vybrat role serveru je vybraná role Webový server IIS.

  2. Po kroku funkce se krok služby rolí načte pro webový server (IIS). Vyberte požadované služby role IIS nebo přijměte výchozí poskytnuté služby rolí.

    Výchozí služby rolí se vyberou v kroku vybrat služby rolí.

    Windows Ověřování (volitelné)
    pokud chcete povolit Windows ověřování, rozbalte následující uzly: zabezpečení webového serveru > . vyberte funkci ověřování Windows . další informace najdete v tématu Windows ověřování <windowsAuthentication> a konfigurace ověřování Windows.

    WebSockets (volitelné)
    objekty websocket jsou podporované ASP.NET Core 1,1 nebo novějším. Chcete-li povolit objekty WebSockets, rozbalte následující uzly: > vývoj aplikací webového serveru. Vyberte funkci protokolu WebSocket . Další informace najdete v tématu objekty WebSockets.

  3. Chcete-li nainstalovat roli a služby webového serveru, postupujte podle kroků pro potvrzení . Po instalaci role webový server (IIS) není nutné restartovat server nebo službu IIS.

Windows desktopové operační systémy

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

  1. přejděte na ovládací panely > programy programy > a funkce > zapnout nebo vypnout funkce 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 pro konzolu pro správu služby IIS.

  4. Zaškrtněte políčko u webových služeb.

  5. Přijměte výchozí funkce pro webové služby nebo upravte funkce služby IIS.

    Windows Ověřování (volitelné)
    pokud chcete povolit Windows ověřování, rozbalte následující uzly: zabezpečení webových služeb > . vyberte funkci ověřování Windows . další informace najdete v tématu Windows ověřování <windowsAuthentication> a konfigurace ověřování Windows.

    WebSockets (volitelné)
    objekty websocket jsou podporované ASP.NET Core 1,1 nebo novějším. Chcete-li povolit objekty WebSockets, rozbalte následující uzly: funkce pro vývoj aplikací v rámci webové služby > . Vyberte funkci protokolu WebSocket . Další informace najdete v tématu objekty WebSockets.

  6. Pokud instalace služby IIS vyžaduje restart, restartujte systém.

v Windows funkcích se vybrala konzola pro správu služby IIS a webové služby.

Instalace hostující sady .NET Core

Nainstalujte hostující sadu .NET Core do hostitelského systému. svazek nainstaluje modul Runtime .net core, knihovnu .net core a modul ASP.NET Core. modul umožňuje, aby aplikace ASP.NET Core běžely za službou IIS.

Důležité

Pokud je hostující sada nainstalována před službou IIS, je nutné opravit instalaci sady prostředků. Spusťte znovu instalační program hostující sady po instalaci služby IIS.

Pokud se hostující sada nainstaluje po instalaci 64 (x64) verze .NET Core, můžou se zdát, že sady SDK chybí (nezjistily se žádné sady .NET Core SDK). Chcete-li tento problém vyřešit, přečtěte si téma řešení potíží a ladění ASP.NET Corech projektů .

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

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

Aktuální instalační program sady hostujících sad .NET Core (přímé stahování)

Starší verze instalačního programu

Chcete-li získat starší verzi instalačního programu:

  1. Přejděte na stránku stáhnout jádro .NET Core .
  2. Vyberte požadovanou verzi .NET Core.
  3. Ve sloupci Spustit aplikace – modul runtime vyhledejte řádek požadované verze modulu runtime .NET Core.
  4. Stáhněte instalační program pomocí odkazu hostující sada .

Upozornění

Některé instalační programy obsahují verze vydaných verzí, které dosáhly svého konce životnosti (konce řádku) a které už nejsou podporovány společností Microsoft. Další informace najdete v tématu zásady podpory.

Instalace hostitelského balíčku

  1. Spusťte instalační program na serveru. 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čit instalaci modulu ASP.NET Core.
    • OPT_NO_RUNTIME=1: Přeskočí instalace modulu runtime .NET Core. Používá se, když Server hostuje jenom samostatná nasazení (SCD).
    • OPT_NO_SHAREDFX=1: přeskočí instalace sdíleného rozhraní ASP.NET shared (ASP.NET runtime). Používá se, když Server hostuje jenom samostatná nasazení (SCD).
    • OPT_NO_X86=1: Přeskočí instalace běhových prostředí x86. Tento parametr použijte, pokud víte, že nebudete hostovat 32 aplikace. Pokud existuje možnost, že v budoucnosti budete hostovat jak 32, tak i 64 aplikace, tento parametr nepoužívejte a nainstalujete oba moduly runtime.
    • OPT_NO_SHARED_CONFIG_CHECK=1: Pokud je sdílená konfigurace ( applicationHost.config ) na stejném počítači jako instalace služby IIS, zakažte kontrolu použití sdílené konfigurace služby IIS. k dispozici jenom pro ASP.NET Core 2,2 nebo novější instalační programy hostujících prostředků. Další informace naleznete v tématu Modul ASP.NET Core.
  2. Restartování služby IIS zabere změny v systémové cestě, což je proměnná prostředí vytvořená instalačním programem. chcete-li restartovat webový server, zastavte službu was (Windows process Activation service) a pak restartujte službu W3SVC (World World World publishing service). 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 nesplňuje chování při přeposílání pro vydání oprav pro balíčky sdílených rozhraní. Po upgradu sdíleného rozhraní instalací nové hostitelské sady restartujte systém nebo spusťte následující příkazy v příkazovém prostředí se zvýšenými oprávněními:

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.

Při publikování pomocí Visual Studio nainstalovat Nasazení webu

Při nasazování aplikací na servery s nasazení webunainstalujte na server nejnovější verzi nasazení webu. Chcete-li nainstalovat Nasazení webu, použijte instalační program webové platformy (WebPI) nebo si instalační program Získejte přímo z webu služby Stažení softwaru. Upřednostňovanou metodou je použití 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é složky a soubory aplikace. V následujícím kroku je jako fyzická cesta k aplikaci služba IIS poskytována jako cesta k této složce. Další informace o složce nasazení aplikace a rozložení souborů naleznete v tématu ASP.NET Core adresářové struktury .

  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 lokality a nastavte fyzickou cestu ke složce pro nasazení aplikace. Zadejte konfiguraci vazby a vytvořte web výběrem OK:

    Zadejte název lokality, fyzickou cestu a název hostitele v kroku přidat web.

    Upozornění

    Nelze použít vazby zástupných znaků na nejvyšší úrovni ( http://*:80/ a http://+:80 ). Vazby zástupných znaků nejvyšší úrovně můžou aplikaci otevřít pro slabá místa zabezpečení. To platí pro silné i slabé zástupné znaky. Místo zástupných znaků použijte explicitní názvy hostitelů. Vazba zástupných znaků subdomény (například *.mysub.com ) nemá toto bezpečnostní riziko, pokud ovládáte celou nadřazenou doménu (na rozdíl od *.com , která je zranitelná). Další informace najdete v části rfc7230 část-5,4 .

  4. V uzlu serveru vyberte fondy aplikací.

  5. klikněte pravým tlačítkem myši 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 bez spravovaného kódu:

    Pro verzi .NET CLR nenastavte žádný spravovaný kód.

    ASP.NET Core běží v samostatném procesu a spravuje modul runtime. ASP.NET Core nespoléhá na načítání clr desktopu (.net clr). Základní modul CLR (Common Language Runtime) pro .NET Core se spouští k hostování aplikace v pracovním procesu. Nastavení verze .NET CLR na žádný spravovaný kód není volitelné, ale doporučuje se.

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

    • V případě nasazeného samostatného nasazení s 32 (x86) publikovaného s 32 sadou SDK, která používá model hostování v rámci procesu, povolte fond aplikací pro 32-bit. Ve Správci služby IIS přejděte na postranní panel připojení na fondy aplikací . Vyberte fond aplikací aplikace. na bočním panelu akce vyberte upřesnit Nastavení. Nastavte možnost povolit 32 aplikace na True .

    • Pro 64 (x64) samostatné nasazení , které používá model hostování v rámci procesu, zakažte fond aplikací pro procesy 32 (x86). Ve Správci služby IIS přejděte na postranní panel připojení na fondy aplikací . Vyberte fond aplikací aplikace. na bočním panelu akce vyberte upřesnit Nastavení. Nastavte možnost povolit 32 aplikace na False .

  8. Potvrďte, že identita modelu procesu má správná oprávnění.

    Pokud se výchozí identita fondu aplikací (modelu procesu > Identity ) změní z applicationPool Identity 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. Například fond aplikací vyžaduje přístup pro čtení a zápis ke složkám, kde aplikace čte a zapisuje soubory.

Windows Konfigurace ověřování (volitelné)
další informace najdete v tématu konfigurace ověřování Windows.

Nasazení aplikace

Nasaďte aplikaci do složky fyzické cesty služby IIS, která byla navázána v části Vytvoření webu služby IIS . Nasazení webu je doporučeným mechanismem pro nasazení, ale existuje několik možností, jak aplikaci přesunout ze složky projektu publish do složky pro nasazení hostitelského systému.

Nasazení webu s Visual Studio

v tématu Visual Studio publikování profilů pro ASP.NET Core nasazení aplikací se dozvíte, jak vytvořit publikační profil pro použití s Nasazení webu. pokud poskytovatel hostingu poskytuje profil publikování nebo podporu pro jeho vytvoření, stáhněte si jeho profil a importujte ho pomocí dialogového okna publikování Visual Studio:

Stránka publikovat dialog

Nasazení webu mimo Visual Studio

Nasazení webu lze použít také mimo Visual Studio z příkazového řádku. Další informace najdete v tématu Nástroj pro nasazení webu.

Alternativy k Nasazení webu

Pomocí některé z několika metod přesuňte aplikaci do hostitelského systému, jako je ruční kopírování, Xcopy, Robocopynebo PowerShell.

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

Procházení webu

Po nasazení aplikace do hostitelského systému vytvořte požadavek na jeden z veřejných koncových bodů aplikace.

V následujícím příkladu je web vázaný na název hostitele služby IIS na www.mysite.com portu 80 . Požadavek se provádí na http://www.mysite.com :

Prohlížeč Microsoft Edge načetl úvodní stránku služby IIS.

Uzamčené soubory nasazení

Soubory ve složce nasazení jsou při spuštění aplikace zamčené. Uzamčené soubory nelze během nasazení přepsat. Pokud chcete uvolnit uzamčené soubory v nasazení, pomocí jednoho z následujících přístupů zastavte fond aplikací:

  • Použijte Nasazení webu a odkaz Microsoft.NET.Sdk.Web v souboru projektu. Soubor app_offline.htm je umístěn v kořenovém adresáři adresáře webové aplikace. Když soubor existuje, modul ASP.NET Core aplikaci řádně vypne a během nasazování app_offline.htm tento soubor dodá. Další informace najdete v referenčních informacích ASP.NET Core Module.

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

  • Použití PowerShellu k app_offline.htm vynětu (vyžaduje 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

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

Pokud je okruh klíčů uložený v paměti při restartování aplikace:

  • Všechny cookie ověřovací tokeny založené na certifikátu jsou zneplatněny.
  • Uživatelé se musí při dalším požadavku znovu přihlásit.
  • Žádná data chráněná pomocí klíčového okruhu už není možné dešifrovat. To může zahrnovat tokeny CSRF a ASP.NET Core cookie dat tempdata MVC.

Pokud chcete nakonfigurovat ochranu dat ve službě IIS tak, aby uchová klíčový okruh, použijte jeden z následujících přístupů:

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

    Klíče ochrany dat používané ASP.NET Core se ukládají v registru mimo aplikace. Pokud chcete zachovat klíče pro danou aplikaci, vytvořte klíče registru pro fond aplikací.

    U samostatných instalací služby IIS mimo webfarm je možné skript Data Protection Provision-AutoGenKeys.ps1 PowerShellu použít pro každý fond aplikací používaný s ASP.NET Core aplikací. 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 klidové době pomocí rozhraní DPAPI s klíčem na úrovni celého počítače.

    Ve scénářích webové farmy je možné aplikaci nakonfigurovat tak, aby k ukládání klíče pro ochranu dat používá cestu UNC. Ve výchozím nastavení nejsou klíče ochrany dat šifrované. Ujistěte se, že oprávnění k souborům pro síťovou složku jsou omezená na Windows, pod kterým aplikace běží. Certifikát X509 je možné použít k ochraně klíčů v klidových klidech. Zvažte mechanismus, který uživatelům umožní nahrávat certifikáty: Umístěte certifikáty do důvěryhodného úložiště certifikátů uživatele a ujistěte se, že jsou dostupné na všech počítačích, na kterých běží aplikace uživatele. Podrobnosti najdete v ASP.NET Core konfigurace ochrany dat.

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

    Toto nastavení se nachází v části Model procesu v části Upřesnit Nastavení pro fond aplikací. Nastavte Načíst profil uživatele na True . Pokud je nastavená možnost , klíče se ukládají v adresáři profilu uživatele a chrání pomocí rozhraní DPAPI s klíčem True specifickým pro uživatelský účet. Klíče se uchová ve složce %LOCALAPPDATA%/ASP.NET/DataProtection-Keys.

    Musí být povolený také atribut setProfileEnvironment fondu aplikací. Výchozí hodnota je setProfileEnvironment true . V některých scénářích (například Windows operační systém) setProfileEnvironment je nastavená na false . Pokud klíče nejsou uložené 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 atribut není k dispozici, což ve výchozím nastavení nastaví hodnotu na , nebo explicitně nastavte hodnotu setProfileEnvironment true atributu na true .
  • Použití systému souborů jako úložiště klíčů

    Upravte kód aplikace tak, aby jako úložiště klíčů byl systém souborů . Použijte certifikát X509 k ochraně okruhu klíčů a ujistěte se, že je certifikát důvěryhodným certifikátem. 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ě.

    Při použití služby IIS ve webové farmě:

    • Použijte sdílené složky, ke které mají přístup všechny počítače.
    • Nasaďte na každý počítač certifikát X509. Nakonfigurujte ochranu dat v kódu.
  • Nastavení zásad ochrany dat na úrovni celého počítače

    Systém ochrany dat má omezenou podporu nastavení výchozích zásad pro celý počítač pro všechny aplikace, které využívají rozhraní DATA Protection API. Další informace naleznete v tématu ASP.NET Core Ochrana dat.

Virtuální adresáře

Virtuální adresáře služby IIS nejsou podporované u ASP.NET Core aplikací. Aplikaci je možné hostovat jako dílčí aplikaci.

Dílčí aplikace

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

Odkazy na statické prostředky v rámci subaplikace by měly používat notaci tilda s lomítkem ( ~/ ). Tilda-lomítko aktivuje pomocný nástroj značek, který předá pathbase dílčí aplikace k vykreslené relativnímu odkazu. U dílčí aplikace v /subapp_path se obrázek propojený pomocí src="~/image.png" vykreslí jako src="/subapp_path/image.png" . Middleware statického souboru kořenové aplikace nezpracuje požadavek na statický soubor. Požadavek zpracovává middleware statického souboru dílčí aplikace.

Pokud je atribut statického assetu nastavený na absolutní cestu (například ), odkaz se vykreslí bez src src="/image.png" pathbase dílčí aplikace. Middleware statického souboru kořenové aplikace se pokusí obsloužit asset z kořenového kořenového adresáře kořenové aplikace,což vede k odpovědi 404 – Nenahádá se, pokud není statický prostředek dostupný v kořenové aplikaci.

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

  1. Vytvořte fond aplikací pro dílčí aplikaci. Nastavte verzi .NET CLR na Nespravovaný kód, protože se pro hostování aplikace v pracovním procesu používá core Common Language Runtime (Core Common Language Runtime) pro .NET Core, ne desktopový CLR (.NET CLR).

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

  3. Ve Správci služby IIS klikněte pravým tlačítkem na složku sub-app a vyberte Convert to Application (Převést na aplikaci).

  4. V dialogovém okně Přidat aplikaci pomocí tlačítka Vybrat pro fond aplikací přiřaďte fond aplikací, který jste vytvořili pro dílčí aplikaci. Vyberte OK.

Přiřazení samostatného fondu aplikací k dílčí aplikaci je požadavkem při použití modelu hostování v procesu.

Další informace o modelu hostování v procesu a konfiguraci modulu ASP.NET Core najdete v tématu Modul ASP.NET Core .

Konfigurace služby IIS s web.config

Na konfiguraci služby IIS má vliv oddílweb.configscénářů služby IIS, které jsou funkční <system.webServer> ASP.NET Core aplikace s modulem ASP.NET Core Module. Například konfigurace služby IIS je funkční pro dynamickou kompresi. Pokud je služba IIS nakonfigurovaná na úrovni serveru pro použití dynamické komprese, může ho prvek v souboruweb.configaplikace zakázat pro ASP.NET Core <urlCompression> aplikaci.

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

Pokud chcete nastavit proměnné prostředí pro jednotlivé aplikace spuštěné v izolovaných fondech aplikací (podporované pro IIS 10.0 nebo novější), podívejte se na část s příkazy AppCmd.exe <environmentVariables> tématu Proměnné prostředí v referenční dokumentaci ke službě IIS.

Oddíly, které nejsou používány ASP.NET Core

Konfigurační oddíly ASP.NET aplikací vweb.config nejsou používány ASP.NET Core aplikacemi pro konfiguraci:

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

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

Fondy aplikací

Izolace fondu aplikací je určená modelem hostování:

  • Hostování v procesu: Aplikace se musí spouštět v samostatných fondech aplikací.
  • Hostování mimo proces: Doporučujeme vzájemně izolovat aplikace tak, že každou aplikaci provozujete ve vlastním fondu aplikací.

Dialogové okno Iis Add Website (Přidat web služby IIS) ve výchozím nastavení využívá jeden fond aplikací pro každou aplikaci. Když se zadá název webu, text 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.

Fond aplikací Identity

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

Dialogové okno upřesňujících nastavení fondu aplikací

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

Pokud pracovní proces služby IIS vyžaduje zvýšený přístup k aplikaci, upravte seznam Access Control seznamu (ACL) pro adresář obsahující aplikaci:

  1. Otevřete Windows Explorer a přejděte do adresáře .

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

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

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

  5. Do pole Zadejte názvy objektů k výběru oblasti zadejte , kde zástupný symbol je název IIS AppPool\{APP POOL NAME} {APP POOL NAME} fondu aplikací. Vyberte tlačítko Zkontrolovat názvy. Pro DefaultAppPool zkontrolujte názvy pomocí IIS AppPool\DefaultAppPool . Když vyberete tlačítko Zkontrolovat názvy, v oblasti názvů objektů se zobrazí DefaultAppPool hodnota . 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 , kde zástupný symbol je název fondu IIS AppPool\{APP POOL NAME} {APP POOL NAME} aplikací.

    Dialogové okno Vybrat uživatele nebo skupiny pro složku aplikace: Název fondu aplikací DefaultAppPool se před výběrem možnosti Zkontrolovat názvy připojí k fondu aplikací služby IIS v oblasti názvů " objektů.

  6. Vyberte OK.

    Dialogové okno Pro výběr uživatelů nebo skupin pro složku aplikace: Po výběru možnosti Zkontrolovat názvy se v oblasti názvů objektů zobrazí název objektu DefaultAppPool.

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

Přístup je možné udělit také na příkazovém řádku pomocí nástroje ICACLS. Jako DefaultAppPool příklad použijeme následující příkaz:

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

Další informace najdete v tématu o ikálech.

Podpora HTTP/2

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

  • V procesu
    • Windows Server 2016/Windows 10 nebo novější; IIS 10 nebo novější
    • Připojení TLS 1.2 nebo novější
  • Mimo proces
    • Windows Server 2016/Windows 10 nebo novější; IIS 10 nebo novější
    • Připojení k veřejnému hraničnímu serveru používají protokol HTTP/2, ale připojení reverzního proxy serveru k serveru Kestrel používá protokol HTTP/1.1.
    • Připojení TLS 1.2 nebo novější

Při nasazování v procesu při natazování připojení HTTP/2 nástroj HttpRequest.Protocol hlásí HTTP/2 . V případě nasazení mimo proces při natazování připojení HTTP/2 nástroj HttpRequest.Protocol hlásí HTTP/1.1 .

Další informace o modelech hostování v procesu a mimo proces najdete v tématu Modul ASP.NET Core .

Ve výchozím nastavení je povolený protokol HTTP/2. Připojení se vrátí k http/1.1, pokud není vytvořeno připojení HTTP/2. Další informace o konfiguraci HTTP/2 s nasazeními 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 ASP.NET Core aplikace, které cílí na .NET Framework.

U ASP.NET Core aplikace, která cílí na .NET Framework, se požadavky OPTIONS ve výchozím nastavení ve službě IIS do aplikace předá. Informace o tom, jak nakonfigurovat obslužné rutiny služby IIS aplikace v pro předání požadavků OPTIONS, najdete v tématu Povolení žádostí mezi zdroji ve webovém rozhraní web.config API ASP.NET 2: Jak CORS funguje.

Modul inicializace aplikace a časový limit nečinnosti

Při hostování ve službě IIS modulem ASP.NET Core verze 2:

  • Modul inicializace aplikace:Aplikaci hostovanou v procesu nebo mimo proces je možné nakonfigurovat tak, aby se automaticky sčítá při restartování pracovního procesu nebo restartování serveru.
  • Časový limit nečinnosti:V aplikaci hostované v procesu je možné nakonfigurovat, aby během období nečinnosti nevypadal časový limit.

Modul inicializace aplikace

Platí pro aplikace hostované v procesu a mimo proces.

Inicializace aplikace služby IIS je funkce služby IIS, která do aplikace odešle požadavek HTTP při spuštění nebo recyklaci fondu aplikací. Požadavek aktivuje spuštění aplikace. Ve výchozím nastavení služba IIS vydá požadavek na kořenovou adresu URL aplikace ( ) k inicializaci aplikace (další podrobnosti o konfiguraci najdete v / dalších zdrojích).

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

V Windows 7 nebo novějších desktopových systémech při místním použití služby IIS:

  1. Přejděte na Ovládací panely Programy a funkce Windows zapněte nebo vypněte > > > (levá strana obrazovky).
  2. Otevřete Internetová informační služba > vývojové funkce webových služeb > .
  3. Zaškrtněte políčko Inicializace aplikace.

Na Windows Serveru 2008 R2 nebo novějším:

  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 Inicializace aplikace.

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

  • Pomocí Správce služby IIS:

    1. Na panelu Připojení vyberte Fondy aplikací.
    2. Klikněte pravým tlačítkem na fond aplikací v seznamu a vyberte Upřesnit Nastavení.
    3. Výchozí režim spuštění je OnDemand. Nastavte Režim spuštění na AlwaysRunning. Vyberte OK.
    4. Na panelu Připojení otevřete uzel Lokality.
    5. Klikněte pravým tlačítkem na aplikaci a vyberte Manage Website > Advanced Nastavení.
    6. Výchozí nastavení Předběžné načtení povoleno je False. Možnost Preload Enabled (Předběžné načtení povoleno) nastavte na True ( Pravda). Vyberte OK.
  • Pomocí web.config přidejte element s nastaveným na na <applicationInitialization> doAppInitAfterRestart true <system.webServer> elementy v souboru web.config' :

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

Časový limit nečinnosti

Platí jenom pro aplikace hostované v procesu.

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

  1. Na panelu Připojení vyberte Fondy aplikací.
  2. Klikněte pravým tlačítkem na fond aplikací v seznamu a vyberte Upřesnit Nastavení.
  3. Výchozí časový limit nečinnosti (minuty) je 20 minut. Časový limit nečinnosti (minuty) nastavte na 0 (nula). Vyberte OK.
  4. Recyklujte pracovní proces.

Pokud chcete zabránit tomu, aby u aplikací hostovaných mimo proces docházet k časovému limitu, použijte některý z následujících přístupů:

Modul inicializace aplikace a další prostředky s časovým limitem nečinnosti

Prostředky nasazení pro správce služby IIS

Další zdroje informací

kurz týkající se publikování ASP.NET Core aplikace na server služby IIS najdete v tématu Publikování ASP.NET Core ve službě IIS .

Instalace hostující sady .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ší

ServerHTTP.sys (dříve označovaný jako weblisten) nefunguje v konfiguraci reverzního proxy serveru pomocí služby IIS. Použijte Kestrel Server.

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

Pokyny k řešení potíží najdete v tématu řešení potíží a ladění ASP.NET Corech projektů .

Podporované platformy

Podporují se aplikace publikované pro nasazení 32 (x86) nebo 64-bit (x64). Nasazení 32 aplikace s 32 (x86) .NET Core SDK, pokud aplikace:

  • Vyžaduje větší dostupný adresní prostor virtuální paměti pro 64 aplikaci.
  • Vyžaduje větší velikost zásobníku služby IIS.
  • Má 64 nativní závislosti.

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

Modely hostingu

Model hostování v procesu

při použití hostování v rámci procesu ASP.NET Core aplikace běží ve stejném procesu jako jeho pracovní proces služby IIS. Hostování v rámci procesů poskytují lepší výkon než hostování mimo procesy z těchto důvodů:

  • Žádosti nejsou proxy serverem přes adaptér zpětné smyčky. Adaptér zpětné smyčky je síťové rozhraní, které vrátí odchozí síťový provoz zpátky do stejného počítače.

služba IIS zpracovává správu procesů pomocí služby was (Windows process Activation Service).

modul ASP.NET Core:

  • Provede inicializaci aplikace.
    • Načte CoreCLR.
    • Volání Program.Main .
  • Zpracovává životnost nativního požadavku služby IIS.

model hostování v rámci procesu není podporován pro aplikace ASP.NET Core, které cílí na .NET Framework.

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

ASP.NET Core Modul ve scénáři hostování v rámci procesu

Požadavek přijde z webu do ovladače HTTP.sys režimu jádra. Ovladač směruje nativní požadavek na IIS na konfigurovaném portu webu, obvykle 80 (HTTP) nebo 443 (HTTPS). modul ASP.NET Core obdrží nativní požadavek a předá ho k serveru HTTP služby IIS ( IISHttpServer ). HTTP server IIS je vnitroprocesové implementace v rámci procesového serveru pro službu IIS, která převádí požadavek z nativního na spravovanou.

poté, co Server HTTP služby IIS požadavek zpracuje, je požadavek vložen do kanálu middleware ASP.NET Core. Kanál middlewaru zpracovává požadavek a předá ho jako HttpContext instanci do logiky aplikace. Odpověď aplikace se předává zpět službě IIS prostřednictvím serveru IIS HTTP. Služba IIS odešle odpověď klientovi, který žádost inicioval.

vnitroprocesové hostování v rámci procesu je výslovný souhlas pro existující aplikace, ale dotnet nové šablony jsou výchozí pro všechny scénáře hostování v rámci procesu pro všechny služby IIS a IIS Express.

CreateDefaultBuilder přidá IServer instanci voláním UseIIS metody pro spuštění CoreCLR a hostování aplikace uvnitř pracovního procesu služby IIS (w3wp.exe nebo iisexpress.exe). Testy výkonu označují, že hostování aplikace .NET Core v rámci procesu přináší výrazně vyšší propustnost žádostí v porovnání s hostováním aplikací mimo proces a požadavky na proxy Kestrel Server.

Model hostování mimo proces

vzhledem k tomu, že ASP.NET Core aplikace běží v procesu odděleném od pracovního procesu služby IIS, modul ASP.NET Core zpracovává správu procesů. modul spustí proces pro aplikaci ASP.NET Core, když první požadavek dorazí a restartuje aplikaci, pokud se ukončí nebo dojde k chybě. to je v podstatě stejné chování jako u aplikací, které běží v procesu, které jsou spravované službou Windows process Activation Service (WAS).

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

ASP.NET Core Modul ve scénáři hostování mimo proces

Požadavky přicházející z webu do ovladače HTTP.sys režimu jádra. Ovladač směruje požadavky do služby IIS na konfigurovaném portu webu, obvykle 80 (HTTP) nebo 443 (HTTPS). Modul předá požadavky na Kestrel náhodný port pro aplikaci, což není port 80 nebo 443.

Modul Určuje port přes proměnnou prostředí při spuštění a UseIISIntegration rozšíření nakonfiguruje server tak, aby naslouchal http://localhost:{PORT} . Budou provedeny další kontroly a požadavky, které nepocházejí z modulu, jsou odmítnuty. Modul nepodporuje předávání HTTPS, takže požadavky se předávají přes protokol HTTP i v případě, že je služba IIS prostřednictvím protokolu HTTPS přijímá.

po Kestrel žádosti z modulu se žádost odešle do kanálu middleware ASP.NET Core. Kanál middlewaru zpracovává požadavek a předá ho jako HttpContext instanci do logiky aplikace. Middleware, které přidala integrace služby IIS, do schématu, vzdálené IP adresy a pathbase, aby bylo možné tyto požadavky předat Kestrel . Odpověď aplikace se předává zpátky do služby IIS, která ji přenáší zpátky do klienta HTTP, který žádost inicioval.

pokyny ke konfiguraci ASP.NET Core modulu najdete v tématu Modul ASP.NET Core .

Další informace o hostování najdete v tématu hostitel v ASP.NET Core.

Konfigurace aplikací

Povolit komponenty IISIntegration

Při sestavování hostitele v CreateWebHostBuilder (program. cs) volejte volání CreateDefaultBuilder Povolení integrace služby IIS:

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

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

Možnosti služby IIS

Model hostování v procesu

Pokud chcete nakonfigurovat možnosti serveru IIS, zahrňte do nástroje konfiguraci služby pro IISServerOptions ConfigureServices . Následující příklad zakáže AutomaticAuthentication:

services.Configure<IISServerOptions>(options => 
{
    options.AutomaticAuthentication = false;
});
Možnost Výchozí Nastavení
AutomaticAuthentication true pokud true Server IIS nastaví ověření HttpContext.User pomocí Windows ověřování. Pokud false Server poskytuje pouze identitu pro HttpContext.User a reaguje na výzvy, pokud je explicitně vyžádala AuthenticationScheme . Windows Pro funkci je třeba povolit ověřování ve službě IIS AutomaticAuthentication . další informace najdete v tématu ověřování Windows.
AuthenticationDisplayName null Nastaví zobrazovaný název, který se zobrazí uživatelům na přihlašovacích stránkách.

Model hostování mimo proces

Pokud chcete nakonfigurovat možnosti služby IIS, zahrňte do nástroje konfiguraci služby pro IISOptions ConfigureServices . Následující příklad zabrání aplikaci v naplnění HttpContext.Connection.ClientCertificate :

services.Configure<IISOptions>(options => 
{
    options.ForwardClientCertificate = false;
});
Možnost Výchozí Nastavení
AutomaticAuthentication true pokud true služba IIS integration middleware nastaví ověření HttpContext.User pomocí Windows ověřování. falseV případě, middleware poskytuje pouze identitu pro HttpContext.User a reaguje na výzvy, pokud je explicitně vyžádala AuthenticationScheme . Windows Pro funkci je třeba povolit ověřování ve službě IIS AutomaticAuthentication . další informace najdete v tématu Windows ověřování .
AuthenticationDisplayName null Nastaví zobrazovaný název, který se zobrazí uživatelům na přihlašovacích stránkách.
ForwardClientCertificate true Pokud true je k MS-ASPNETCORE-CLIENTCERT dispozici hlavička žádosti, HttpContext.Connection.ClientCertificate je naplněna hodnota.

Scénáře proxy serveru a nástroje pro vyrovnávání zatížení

služba IIS integration middleware, která konfiguruje middleware předávaných hlaviček, a modul ASP.NET Core je nakonfigurován tak, aby přenesl schéma (HTTP/HTTPS) a vzdálenou IP adresu, kam pochází požadavek. Pro aplikace hostované za dalšími proxy servery a nástroji pro vyrovnávání zatížení může být vyžadována další konfigurace. další informace najdete v tématu konfigurace ASP.NET Core pro práci se servery proxy a nástroji pro vyrovnávání zatížení.

Soubor web.config

Soubor web.config nakonfiguruje modul ASP.NET Core Module. Vytvoření, transformace a publikování souboruweb.config zpracovává cílový MSBuild ( ) při _TransformWebConfig publikování projektu. Tento cíl se nachází v cílech webové sady SDK ( Microsoft.NET.Sdk.Web ). Sada SDK je nastavená v horní části souboru projektu:

<Project Sdk="Microsoft.NET.Sdk.Web">

Pokud web.config soubor neexistuje, vytvoří se soubor se správnou processPath a argumenty pro konfiguraci modulu ASP.NET Core a přesune se na publikovaný výstup.

Pokud je web.config v projektu, soubor se transformuje se správnou processPath a argumenty pro konfiguraci modulu ASP.NET Core a přesune se na publikovaný výstup. Transformace neupraví nastavení konfigurace služby IIS v souboru.

Soubor web.config může poskytovat 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 s ASP.NET Core aplikacemi, najdete v tématu Moduly služby IIS.

Pokud chcete webové sadě SDK zabránit v transformaci web.config, použijte <IsTransformWebConfigDisabled> vlastnost v souboru projektu:

<PropertyGroup>
  <IsTransformWebConfigDisabled>true</IsTransformWebConfigDisabled>
</PropertyGroup>

Když webové sadě SDK zakážete transformaci souboru, musí vývojář ručně nastavit processPath a argumenty. Další informace naleznete v tématu Modul ASP.NET Core.

web.config umístění souboru

Aby bylo možné správně nastavit modul ASP.NET Core, musí být soubor web.config v kořenové cestě obsahu (obvykle základní cesta aplikace) nasazené aplikace. Jedná se o stejné umístění jako fyzická cesta webu poskytovaná službě IIS. Soubor web.config v kořenovém adresáři aplikace, aby bylo možné publikovat více aplikací pomocí Nasazení webu.

Citlivé soubory existují ve fyzické cestě aplikace, například <assembly>.runtimeconfig.js na , <assembly>.xml (komentáře dokumentace XML) a <assembly>.deps.jsna. Když je web.config soubor a web se spustí normálně, služba IIS tyto citlivé soubory na vyžádání nenaslouchá. Pokud soubor web.config chybí, je nesprávně pojmenovaný nebo se mu nedaří nakonfigurovat web pro normální spouštění, může služba IIS obsluhovat citlivé soubory veřejně.

Soubor web.config musí být v nasazení za všech okolností, správně pojmenovaný a schopný nakonfigurovat lokalitu pro normální spuštění. Nikdy neodebírat web.config z produkčního nasazení.

Transformace souboru web.config

Pokud při publikování potřebujete transformovat web.config (například nastavit proměnné prostředí na základě konfigurace, profilu nebo prostředí), podívejte se na Transformace souboru web.config .

Konfigurace služby IIS

Windows Serverové operační systémy

Povolte roli serveru webový server (IIS) a vytvořte služby rolí.

  1. V nabídce Spravovat použijte průvodce přidáním rolí a funkcí nebo odkaz v Správce serveru. V kroku Role serveru zaškrtněte políčko u možnosti Webový server (IIS).

    Role IIS webového serveru je vybraná v kroku Vybrat role serveru.

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

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

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

    WebSockets (volitelné)
    WebSockets se podporuje ASP.NET Core 1.1 nebo novějším. Pokud chcete povolit webSockety, rozbalte následující uzly: Vývoj > aplikací webového serveru. Vyberte funkci protokolu WebSocket. Další informace najdete v tématu WebSockets.

  3. Pokračujte krokem Potvrzení a nainstalujte roli a služby webového serveru. Po instalaci role webového serveru (IIS) se nevyžaduje restartování serveru nebo služby IIS.

Windows desktopových operačních systémů

Povolte konzolu pro správu služby IIS a webovou službu.

  1. Přejděte na Ovládací panely Programy a funkce Windows zapněte nebo vypněte > > > (levá strana obrazovky).

  2. Otevřete Internetová informační služba. Otevřete uzel Nástroje pro správu webu.

  3. Zaškrtněte políčko konzoly pro správu služby IIS.

  4. Zaškrtněte políčko pro službu World Wide Web Services.

  5. Přijměte výchozí funkce pro služby World Wide Web Services nebo přizpůsobte funkce služby IIS.

    Windows Ověřování (volitelné)
    Pokud chcete Windows ověřování, rozbalte následující uzly: World Wide Web Services > Security. Vyberte funkci Windows ověřování. Další informace najdete v tématu Windows a <windowsAuthentication> Konfigurace Windows ověřování.

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

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

Konzola pro správu služby IIS a webové služby jsou vybrané v Windows funkcí.

Instalace sady .NET Core Hosting Bundle

Nainstalujte do hostitelského systému sadu .NET Core Hosting Bundle. Sada nainstaluje modul runtime .NET Core, knihovnu .NET Core a ASP.NET Core Module. Modul umožňuje, ASP.NET Core aplikace běží za službou IIS.

Důležité

Pokud je sada hostitelů nainstalovaná před službou IIS, je nutné instalaci sady opravit. Po instalaci služby IIS znovu spusťte instalační program sady hostingu.

Pokud je sada hostingu nainstalovaná po instalaci 64bitové (x64) verze .NET Core, sady SDK se můžou zdát, že chybí (nebyly zjištěny žádné sady.NET CoreSDK). Pokud chcete tento problém vyřešit, podívejte se na . řešení potíží a ladění ASP.NET Corech projektů

Stáhnout

  1. Přejděte na stránku Stáhnout .NET Core.
  2. Vyberte požadovanou verzi .NET Core.
  3. Ve sloupci Spustit aplikace – Modul runtime vyhledejte řádek požadované verze modulu runtime .NET Core.
  4. Stáhněte si instalační program pomocí odkazu Hostující sada.

Upozornění

Některé instalační programy obsahují verze verzí, které dosáhly konce jejich životnosti (EOL) a Společnost Microsoft je už nepodporuje. Další informace najdete v zásadách podpory.

Instalace sady hostingu

  1. Spusťte instalační program na serveru. 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čte instalaci modulu ASP.NET Core Module.
    • OPT_NO_RUNTIME=1: Přeskočí instalaci modulu runtime .NET Core. Používá se, když server hostuje jenom samostatná nasazení (SCD).
    • OPT_NO_SHAREDFX=1: Přeskočte instalaci ASP.NET Shared Framework (ASP.NET runtime). Používá se, když server hostuje jenom samostatná nasazení (SCD).
    • OPT_NO_X86=1: Přeskočí instalaci modulu runtime x86. Tento parametr použijte, pokud víte, že nebudete hostovat 32bitové aplikace. Pokud máte nějakou šanci, že v budoucnu budete hostovat 32bitové i 64bitové aplikace, nepoužívejte tento parametr a neinstalujte oba moduly runtime.
    • OPT_NO_SHARED_CONFIG_CHECK=1: Zakažte kontrolu použití sdílené konfigurace služby IIS, pokud je sdílená konfigurace (applicationHost.config) na stejném počítači jako instalace služby IIS. K dispozici pouze pro ASP.NET Core 2.2 nebo novějších instalačních programů hostingu Bundler. Další informace naleznete v tématu Modul ASP.NET Core.
  2. Restartujte systém nebo spusťte následující příkazy v příkazovém prostředí:

    net stop was /y
    net start w3svc
    

    Restartování služby IIS přebere změnu systémové cesty, což je proměnná prostředí provedená instalačním programem.

Při instalaci sady hostingu není nutné ručně zastavovat jednotlivé weby ve službě IIS. Hostované aplikace (weby IIS) se restartují při restartování služby IIS. Aplikace se znovu spustí, když dostanou svůj první požadavek, včetně z modulu inicializace aplikace.

ASP.NET Core využívá chování při přeposílání verzí oprav balíčků sdílené architektury. Když se aplikace hostované službou IIS restartují se službou IIS, aplikace se při přijetí prvního požadavku načtou s nejnovějšími verzemi oprav odkazovaných balíčků. Pokud se služba IIS nerestartuje, aplikace se restartují a projeví se dopředné chování při recyklaci pracovních procesů a přijetí prvního požadavku.

Poznámka

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

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

Při nasazování aplikací na servery s Nasazení webunainstalujte nejnovější verzi Nasazení webu na server. Pokud chcete Nasazení webu, použijte Instalační program webové platformy (WebPI) nebo získejte instalační program přímo z webu Microsoft Download Center. Upřednostňovanou metodou je použití rozhraní 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é složky a soubory aplikace. V následujícím kroku se cesta ke složce poskytuje službě IIS jako fyzická cesta k aplikaci. Další informace o složce nasazení a rozložení souboru aplikace najdete v tématu ASP.NET Core adresářové struktury .

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

  3. Zadejte Název webu a nastavte fyzickou cestu ke složce nasazení aplikace. Vyberte OK, zadejte konfiguraci vazby a vytvořte web:

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

    Upozornění

    Vazby se zástupnými znaky nejvyšší úrovně ( a http://*:80/ ) by se http://+:80 neměly používat. Vazby se zástupnými znaky nejvyšší úrovně mohou otevřít vaši aplikaci pro ohrožení zabezpečení. To platí pro silné i slabé zástupné znaky. Místo zástupných znaků použijte explicitní názvy hostitelů. Vazba se zástupnými znaky subdomény (například ) nemá toto bezpečnostní riziko, pokud řídíte celou nadřazenou doménu (na rozdíl od , která *.mysub.com *.com je zranitelná). Další informace najdete v dokumentu rfc7230 section-5.4.

  4. V uzlu serveru vyberte Fondy aplikací.

  5. Klikněte pravým tlačítkem na fond aplikací webu a v místní nabídce Nastavení Basic.

  6. V okně Upravit fond aplikací nastavte verzi .NET CLR na Žádný spravovaný kód:

    Pro verzi .NET CLR nastavte Žádný spravovaný kód.

    ASP.NET Core běží v samostatném procesu a spravuje modul runtime. ASP.NET Core se nespoléhá na načtení desktopového modulu CLR (.NET CLR) a spuštění modulu — Core Common Language Runtime (CoreCLR) pro .NET Core k hostování aplikace v pracovním procesu. Nastavení verze .NET CLR na Žádný spravovaný kód 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é používá model hostování v procesu,zakažte fond aplikací pro 32bitové procesy (x86).

    Na bočním panelu Akce Správce služby IIS > fondy aplikací vyberte Nastavit výchozí nastavení fondu aplikací nebo Upřesnit Nastavení. Vyhledejte povolit 32bitové aplikace a nastavte hodnotu na False . Toto nastavení nemá vliv na aplikace nasazené pro hostování mimo proces.

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

    Pokud se výchozí identita fondu aplikací ( model procesu ) změní z ApplicationPool > Identity Identity 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 do složek, ve kterých aplikace čte a zapisuje soubory.

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

Nasazení aplikace

Nasaďte aplikaci do složky fyzické cesty služby IIS, která byla vytvořena v části Vytvoření webu služby IIS. Nasazení webu je doporučený mechanismus nasazení, ale existuje několik možností pro přesun aplikace ze složky publikování projektu do složky nasazení hostitelského systému.

Nasazení webu s Visual Studio

Informace o Visual Studio profilu publikování pro nasazení ASP.NET Core najdete v tématu o vytvoření profilu publikování pro použití s Nasazení webu. Pokud poskytovatel hostingu poskytuje profil publikování nebo podporu pro jeho vytvoření, stáhněte si jeho profil a naimportujte ho pomocí dialogového Visual Studio Publikovat:

Stránka dialogového okna Publikovat

Nasazení webu mimo Visual Studio

Nasazení webu můžete také použít mimo Visual Studio z příkazového řádku. Další informace najdete v tématu Nástroj pro nasazení webu.

Alternativy k Nasazení webu

Pomocí některé z několika metod přesuňte aplikaci do hostitelského systému, jako je ruční kopírování, Xcopy, Robocopynebo PowerShell.

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

Procházení webu

Po nasazení aplikace do hostitelského systému vytvořte požadavek na jeden z veřejných koncových bodů aplikace.

V následujícím příkladu je web vázaný na název hostitele služby IIS na www.mysite.com portu 80 . Požadavek se provádí na http://www.mysite.com :

Prohlížeč Microsoft Edge načetl úvodní stránku služby IIS.

Uzamčené soubory nasazení

Soubory ve složce nasazení jsou při spuštění aplikace uzamčené. Zamknuté soubory nelze během nasazování přepsat. Pokud chcete uvolnit uzamčené soubory v nasazení, pomocí jednoho z následujících přístupů zastavte fond aplikací:

  • Použijte Nasazení webu a odkaz Microsoft.NET.Sdk.Web v souboru projektu. Soubor app_offline.htm umístěný v kořenovém adresáři adresáře webové aplikace. Když soubor existuje, modul ASP.NET Core aplikaci řádně vypne a během nasazeníapp_offline.htm soubor. Další informace najdete v referenčních informacích ASP.NET Core Module.

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

  • Pomocí PowerShellu můžete app_offline.htm (vyžaduje 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

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

Pokud je okruh klíčů při restartování aplikace uložený v paměti:

  • Všechny cookie ověřovací tokeny založené na certifikátu jsou zneplatněny.
  • Uživatelé se musí při dalším požadavku znovu přihlásit.
  • Žádná data chráněná pomocí klíčového okruhu už není možné dešifrovat. To může zahrnovat tokeny CSRF a ASP.NET Core cookie dat tempdata MVC.

Pokud chcete nakonfigurovat ochranu dat ve službě IIS tak, aby uchová klíčový okruh, použijte jeden z následujících přístupů:

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

    Klíče ochrany dat používané ASP.NET Core se ukládají v registru mimo aplikace. Pokud chcete zachovat klíče pro danou aplikaci, vytvořte klíče registru pro fond aplikací.

    Pro samostatné instalace služby IIS mimo webfarm je možné skript Prostředí PowerShell Provision-AutoGenKeys.ps1 Ochranu dat použít pro každý fond aplikací používaný s ASP.NET Core aplikací. 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 klidové době pomocí rozhraní DPAPI s klíčem na úrovni celého počítače.

    Ve scénářích webové farmy je možné aplikaci nakonfigurovat tak, aby k ukládání okruhu klíčů ochrany dat používá cestu UNC. Ve výchozím nastavení nejsou klíče ochrany dat šifrovány. Ujistěte se, že oprávnění k souborům pro síťovou složku jsou omezená na Windows, pod kterým aplikace běží. Certifikát X509 je možné použít k ochraně klíčů v klidových klidech. Zvažte mechanismus, který uživatelům umožní nahrávat certifikáty: Umístěte certifikáty do důvěryhodného úložiště certifikátů uživatele a ujistěte se, že jsou dostupné na všech počítačích, na kterých běží aplikace uživatele. Podrobnosti najdete v ASP.NET Core konfigurace ochrany dat.

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

    Toto nastavení se nachází v části Model procesu v části Upřesnit Nastavení pro fond aplikací. Nastavte Načíst profil uživatele na True . Pokud je nastavená možnost , klíče se ukládají v adresáři profilu uživatele a chrání pomocí rozhraní DPAPI s klíčem True specifickým pro uživatelský účet. Klíče se uchová ve složce %LOCALAPPDATA%/ASP.NET/DataProtection-Keys.

    Musí být povolený také atribut setProfileEnvironment fondu aplikací. Výchozí hodnota je setProfileEnvironment true . V některých scénářích (například Windows operační systém) setProfileEnvironment je nastavená na false . Pokud klíče nejsou uložené 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 atribut není k dispozici, což ve výchozím nastavení nastaví hodnotu na , nebo explicitně nastavte hodnotu setProfileEnvironment true atributu na true .
  • Použití systému souborů jako úložiště klíčů

    Upravte kód aplikace tak, aby jako úložiště klíčů byl systém souborů . Použijte certifikát X509 k ochraně okruhu klíčů a ujistěte se, že je certifikát důvěryhodným certifikátem. 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ě.

    Při použití služby IIS ve webové farmě:

    • Použijte sdílené složky, ke které mají přístup všechny počítače.
    • Nasaďte na každý počítač certifikát X509. Nakonfigurujte ochranu dat v kódu.
  • Nastavení zásad ochrany dat na úrovni celého počítače

    Systém ochrany dat má omezenou podporu nastavení výchozích zásad pro celý počítač pro všechny aplikace, které využívají rozhraní DATA Protection API. Další informace naleznete v tématu ASP.NET Core Ochrana dat.

Virtuální adresáře

Virtuální adresáře služby IIS nejsou podporované u ASP.NET Core aplikací. Aplikaci je možné hostovat jako dílčí aplikaci.

Dílčí aplikace

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

Odkazy na statické prostředky v rámci subaplikace by měly používat notaci tilda s lomítkem ( ~/ ). Tilda-lomítko aktivuje pomocný nástroj značek, který předá pathbase dílčí aplikace k vykreslené relativnímu odkazu. U dílčí aplikace v /subapp_path se obrázek propojený pomocí src="~/image.png" vykreslí jako src="/subapp_path/image.png" . Middleware statického souboru kořenové aplikace nezpracuje požadavek na statický soubor. Požadavek zpracovává middleware statického souboru dílčí aplikace.

Pokud je atribut statického assetu nastavený na absolutní cestu (například ), odkaz se vykreslí bez src src="/image.png" pathbase dílčí aplikace. Middleware statického souboru kořenové aplikace se pokusí obsloužit asset z kořenového kořenového adresáře kořenové aplikace,což vede k odpovědi 404 – Nenaháje se, pokud není statický prostředek dostupný z kořenové aplikace.

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

  1. Vytvořte fond aplikací pro dílčí aplikaci. Nastavte verzi .NET CLR na Nespravovaný kód, protože se pro hostování aplikace v pracovním procesu používá core Common Language Runtime (Core Common Language Runtime) pro .NET Core, ne desktopový CLR (.NET CLR).

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

  3. Ve Správci služby IIS klikněte pravým tlačítkem na složku sub-app a vyberte Convert to Application (Převést na aplikaci).

  4. V dialogovém okně Přidat aplikaci pomocí tlačítka Vybrat pro fond aplikací přiřaďte fond aplikací, který jste vytvořili pro dílčí aplikaci. Vyberte OK.

Přiřazení samostatného fondu aplikací k dílčí aplikaci je požadavkem při použití modelu hostování v procesu.

Další informace o modelu hostování v procesu a konfiguraci modulu ASP.NET Core najdete v tématu Modul ASP.NET Core .

Konfigurace služby IIS s web.config

Na konfiguraci služby IIS má vliv oddílweb.configscénářů služby IIS, které jsou funkční <system.webServer> ASP.NET Core aplikace s modulem ASP.NET Core Module. Například konfigurace služby IIS je funkční pro dynamickou kompresi. Pokud je služba IIS nakonfigurovaná na úrovni serveru pro použití dynamické komprese, může ho prvek v souboruweb.configaplikace zakázat pro ASP.NET Core <urlCompression> aplikaci.

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

Pokud chcete nastavit proměnné prostředí pro jednotlivé aplikace spuštěné v izolovaných fondech aplikací (podporované pro IIS 10.0 nebo novější), podívejte se na část s příkazy AppCmd.exe <environmentVariables> tématu Proměnné prostředí v referenční dokumentaci ke službě IIS.

Oddíly, které nejsou používány ASP.NET Core

Konfigurační oddíly ASP.NET 4.x v web.config nejsou používány ASP.NET Core aplikacemi pro konfiguraci:

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

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

Fondy aplikací

Izolace fondu aplikací je určená modelem hostování:

  • Hostování v procesu: Aplikace se musí spouštět v samostatných fondech aplikací.
  • Hostování mimo proces: Doporučujeme vzájemně izolovat aplikace tak, že každou aplikaci provozujete ve vlastním fondu aplikací.

Dialogové okno Iis Add Website (Přidat web služby IIS) ve výchozím nastavení využívá jeden fond aplikací pro každou aplikaci. Když se zadá název webu, text 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.

Fond aplikací Identity

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

Dialogové okno upřesňujících nastavení fondu aplikací

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

Pokud pracovní proces služby IIS vyžaduje zvýšený přístup k aplikaci, upravte seznam Access Control seznamu (ACL) pro adresář obsahující aplikaci:

  1. Otevřete Windows Explorer a přejděte do adresáře .

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

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

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

  5. Do pole Zadejte názvy<app_pool_name>oblasti zadejte IIS AppPool. \ Vyberte tlačítko Zkontrolovat jména. Pro DefaultAppPool zkontrolujte názvy pomocí IIS AppPool\DefaultAppPool. Když vyberete tlačítko Zkontrolovat názvy, v oblasti názvů objektů se zobrazí 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 \<app_pool_name> IIS AppPool ve formátu .

    Dialogové okno Vybrat uživatele nebo skupiny pro složku aplikace: Název fondu aplikací DefaultAppPool se před výběrem možnosti Zkontrolovat názvy připojí k fondu aplikací služby IIS v oblasti názvů " objektů.

  6. Vyberte OK.

    Dialogové okno Pro výběr uživatelů nebo skupin pro složku aplikace: Po výběru možnosti Zkontrolovat názvy se v oblasti názvů objektů zobrazí název objektu DefaultAppPool.

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

Přístup je možné udělit také na příkazovém řádku pomocí nástroje ICACLS. Když jako příklad použijete DefaultAppPool, použije se následující příkaz:

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

Další informace najdete v tématu o ikálech.

Podpora HTTP/2

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

  • V procesu
    • Windows Server 2016/Windows 10 nebo novější; IIS 10 nebo novější
    • Připojení TLS 1.2 nebo novější
  • Mimo proces
    • Windows Server 2016/Windows 10 nebo novější; IIS 10 nebo novější
    • Připojení k veřejnému hraničnímu serveru používají protokol HTTP/2, ale připojení reverzního proxy serveru k Kestrel serveru používá protokol HTTP/1.1.
    • Připojení TLS 1.2 nebo novější

Při nasazování v procesu při natazování připojení HTTP/2 protokol HttpRequest.Protocol hlásí HTTP/2 . Při nasazování mimo proces při natazování připojení HTTP/2 protokol HttpRequest.Protocol hlásí HTTP/1.1 .

Další informace o modelech hostování v procesu a mimo proces najdete v tématu Modul ASP.NET Core .

Ve výchozím nastavení je povolený protokol HTTP/2. Připojení se vrátí k http/1.1, pokud není vytvořeno připojení HTTP/2. Další informace o konfiguraci HTTP/2 s nasazeními 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 ASP.NET Core aplikace, které cílí na .NET Framework.

U ASP.NET Core aplikace, která cílí na .NET Framework, se požadavky OPTIONS ve výchozím nastavení ve službě IIS do aplikace předá. Informace o konfiguraci obslužných rutin služby IIS aplikace v web.config pro předání požadavků OPTIONS najdete v tématu Povolení žádostí mezi zdroji ve webovém rozhraní ASP.NET API 2: Jak CORS funguje.

Modul inicializace aplikace a časový limit nečinnosti

Při hostování ve službě IIS modulem ASP.NET Core verze 2:

  • Modul inicializace aplikace:Aplikaci hostovanou v procesu nebo mimo proces je možné nakonfigurovat tak, aby se automaticky sčítá při restartování pracovního procesu nebo restartování serveru.
  • Časový limit nečinnosti:V aplikaci hostované v procesu je možné nakonfigurovat, aby během období nečinnosti nevypadal časový limit.

Modul inicializace aplikace

Platí pro aplikace hostované v procesu a mimo proces.

Inicializace aplikace služby IIS je funkce služby IIS, která do aplikace odešle požadavek HTTP při spuštění nebo recyklaci fondu aplikací. Požadavek aktivuje spuštění aplikace. Ve výchozím nastavení služba IIS vydá požadavek na kořenovou adresu URL aplikace ( ) k inicializaci aplikace (další podrobnosti o konfiguraci najdete v / dalších zdrojích).

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

V Windows 7 nebo novějších desktopových systémech při místním použití služby IIS:

  1. Přejděte na Ovládací panely Programy a funkce Windows zapněte nebo vypněte > > > (levá strana obrazovky).
  2. Otevřete Internetová informační služba > vývojové funkce webových služeb > .
  3. Zaškrtněte políčko Inicializace aplikace.

Na Windows Serveru 2008 R2 nebo novějším:

  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 Inicializace aplikace.

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

  • Pomocí Správce služby IIS:

    1. Na panelu Připojení vyberte Fondy aplikací.
    2. Klikněte pravým tlačítkem na fond aplikací v seznamu a vyberte Upřesnit Nastavení.
    3. Výchozí režim spuštění je OnDemand. Nastavte Režim spuštění na AlwaysRunning. Vyberte OK.
    4. Na panelu Připojení otevřete uzel Lokality.
    5. Klikněte pravým tlačítkem na aplikaci a vyberte Manage Website > Advanced Nastavení.
    6. Výchozí nastavení Předběžné načtení povoleno je False. Možnost Preload Enabled (Předběžné načtení povoleno) nastavte na True (Pravda). Vyberte OK.
  • Pomocí web.config přidejte element s vlastností set na elementy v souboru <applicationInitialization> doAppInitAfterRestart true <system.webServer> 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í jenom pro aplikace hostované v procesu.

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

  1. Na panelu Připojení vyberte Fondy aplikací.
  2. Klikněte pravým tlačítkem na fond aplikací v seznamu a vyberte Upřesnit Nastavení.
  3. Výchozí časový limit nečinnosti (minuty) je 20 minut. Časový limit nečinnosti (minuty) nastavte na 0 (nula). Vyberte OK.
  4. Recyklujte pracovní proces.

Pokud chcete zabránit tomu, aby u aplikací hostovaných mimo proces docházet k časovému limitu, použijte některý z následujících přístupů:

Modul inicializace aplikace a další prostředky s časovým limitem nečinnosti

Prostředky nasazení pro správce služby IIS

Další zdroje informací

Výukové prostředí pro publikování aplikace ASP.NET Core na server služby IIS najdete v tématu Publikování ASP.NET Core ve službě IIS .

Instalace sady .NET Core Hosting Bundle

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

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

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

Pokyny k řešení potíží najdete v tématu řešení potíží a ladění ASP.NET Corech projektů .

Podporované platformy

Podporují se aplikace publikované pro 32bitové nasazení (x86) nebo 64bitové (x64). Nasazení 32bitové aplikace s 32bitovou aplikací (x86) .NET Core SDK, pokud aplikace:

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

K publikování 64bitové aplikace .NET Core SDK 64bitovou aplikaci použijte 64bitovou verzi (x64). V hostitelském systému musí být přítomný 64bitový modul runtime.

ASP.NET Core se dodává Kestrel se serverem, výchozí server HTTP pro více platforem.

Při použití služby IIS IIS Expressse aplikace spouští v procesu odděleném od pracovního procesu služby IIS (mimo proces) se Kestrel serverem.

Protože ASP.NET Core aplikace běží v procesu odděleném od pracovního procesu služby IIS, modul se stará o správu procesů. Modul spustí proces pro aplikaci ASP.NET Core při doručení prvního požadavku a restartuje aplikaci, pokud se vypne nebo dojde k chybě. Jedná se v podstatě o stejné chování jako u aplikací, které běží v procesu spravované službou aktivace Windows procesem (WAS).

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

Modul ASP.NET Core

Požadavky přicházejí z webu do režimu jádra HTTP.sys ovladače. Ovladač směruje požadavky do služby IIS na nakonfigurovaných portech webu, obvykle 80 (HTTP) nebo 443 (HTTPS). Modul předává požadavky do na náhodném portu pro aplikaci, což není Kestrel port 80 nebo 443.

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

Po Kestrel vyzvedne požadavek z modulu, požadavek se nas nabízené do ASP.NET Core middlewaru. Middlewarový kanál požadavek zpracuje a předá ho jako HttpContext instanci do logiky aplikace. Middleware přidaný integrací služby IIS aktualizuje schéma, vzdálenou IP adresu a cestu tak, aby se zohlednil předávání požadavku do Kestrel . Odpověď aplikace se předá zpět do služby IIS, která ji předá zpět klientovi HTTP, který inicioval požadavek.

CreateDefaultBuildernakonfiguruje server jako webový server a povolí integraci služby IIS tím, že nakonfiguruje základní cestu a Kestrel port pro ASP.NET Core Module.

Modul ASP.NET Core generuje dynamický port, který se přiřadí back-endu. CreateDefaultBuilder volá UseIISIntegration metodu . UseIISIntegration nakonfiguruje Kestrel naslouchání na dynamickém portu na IP adrese místního hostitele ( 127.0.0.1 ). Pokud je dynamický port 1234, Kestrel naslouchá na 127.0.0.1:1234 adrese . Tato konfigurace nahrazuje další konfigurace adres URL, které poskytuje:

Volání rozhraní API nebo se při použití modulu UseUrls Kestrel Listen nevyžaduje. Pokud UseUrls je Listen volána hodnota nebo , naslouchá na Kestrel zadaném portu pouze při spuštění aplikace bez služby IIS.

Pokyny ASP.NET Core modulu najdete v tématu Modul ASP.NET Core .

Další informace o hostování najdete v tématu Hostování v ASP.NET Core.

Konfigurace aplikací

Povolení komponent IISIntegration

Při sestavování hostitele v CreateWebHostBuilder (Program.cs) volejte pro CreateDefaultBuilder povolení integrace služby IIS:

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

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

Možnosti služby IIS

Možnost Výchozí Nastavení
AutomaticAuthentication true Pokud true , server služby IIS nastaví ověření pomocí Windows HttpContext.User Ověřování. Pokud false , server poskytuje identitu pouze pro a reaguje na výzvy, pokud o to výslovně žádá HttpContext.User AuthenticationScheme . Windows Aby služba IIS fungovala, musí AutomaticAuthentication být povolené ověřování. Další informace najdete v tématu Windows ověřování.
AuthenticationDisplayName null Nastaví zobrazované jméno zobrazené uživatelům na přihlašovacích stránkách.

Pokud chcete nakonfigurovat možnosti služby IIS, zahrujte konfiguraci služby IISOptions pro v ConfigureServices nástroji . Následující příklad zabrání aplikaci v naplnění HttpContext.Connection.ClientCertificate :

services.Configure<IISOptions>(options => 
{
    options.ForwardClientCertificate = false;
});
Možnost Výchozí Nastavení
AutomaticAuthentication true V true případě nastaví middleware integrace služby IIS ověření pomocí Windows ověřování HttpContext.User . Pokud false je , middleware poskytuje identitu pouze pro a reaguje na výzvy, pokud o to explicitně HttpContext.User žádá AuthenticationScheme . Windows Aby služba IIS fungovala, musí AutomaticAuthentication být povolené ověřování. Další informace najdete v tématu Windows ověřování.
AuthenticationDisplayName null Nastaví zobrazované jméno zobrazené uživatelům na přihlašovacích stránkách.
ForwardClientCertificate true Pokud true je k dispozici MS-ASPNETCORE-CLIENTCERT hlavička požadavku a , naplní se HttpContext.Connection.ClientCertificate .

Scénáře proxy serveru a nástroje pro vyrovnávání zatížení

Middleware pro integraci služby IIS,který konfiguruje middleware s předázených hlavičkami, a modul ASP.NET Core module jsou nakonfigurované tak, aby předaly schéma (HTTP/HTTPS) a vzdálenou IP adresu, ze které požadavek pochází. U aplikací hostovaných za dalšími proxy servery a nástroji pro vyrovnávání zatížení může být nutná další konfigurace. 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

Soubor web.config nakonfiguruje modul ASP.NET Core Module. Vytvoření, transformace a publikování souboruweb.config zpracovává cílový MSBuild ( ) při _TransformWebConfig publikování projektu. Tento cíl se nachází v cílech webové sady SDK ( Microsoft.NET.Sdk.Web ). Sada SDK je nastavená v horní části souboru projektu:

<Project Sdk="Microsoft.NET.Sdk.Web">

Pokud web.config soubor neexistuje, vytvoří se soubor se správnou processPath a argumenty pro konfiguraci modulu ASP.NET Core a přesune se na publikovaný výstup.

Pokud jeweb.config v projektu, soubor se transformuje se správnou processPath a argumenty pro konfiguraci modulu ASP.NET Core a přesune se na publikovaný výstup. Transformace neupraví nastavení konfigurace služby IIS v souboru.

Soubor web.config může poskytovat 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 pomocí ASP.NET Core aplikací, najdete v tématu Moduly služby IIS.

Pokud chcete webové sadě SDK zabránit v transformaci web.config souboru, použijte <IsTransformWebConfigDisabled> vlastnost v souboru projektu:

<PropertyGroup>
  <IsTransformWebConfigDisabled>true</IsTransformWebConfigDisabled>
</PropertyGroup>

Když webové sadě SDK zakážete transformaci souboru, musí vývojář ručně nastavit processPath a argumenty. Další informace naleznete v tématu Modul ASP.NET Core.

web.config umístění souboru

Aby bylo možné správně nastavit modul ASP.NET Core, musí být soubor web.config v kořenové cestě obsahu (obvykle základní cesta aplikace) nasazené aplikace. Jedná se o stejné umístění jako fyzická cesta webu poskytovaná službě IIS. Soubor web.config v kořenovém adresáři aplikace, aby bylo možné publikovat více aplikací pomocí Nasazení webu.

Citlivé soubory existují ve fyzické cestě aplikace, například.runtimeconfig.js <assembly> , <assembly>.xml (komentáře dokumentace XML) a <assembly>.deps.jsna. Když je web.config soubor a web se spustí normálně, služba IIS tyto citlivé soubory na vyžádání nenaslouchá. Pokud soubor web.config chybí, je nesprávně pojmenovaný nebo se mu nedaří nakonfigurovat web pro normální spouštění, může služba IIS obsluhovat citlivé soubory veřejně.

Soubor web.config musí být v nasazení za všech okolností, správně pojmenovaný a schopný nakonfigurovat lokalitu pro normální spuštění. Nikdy neodebírat web.config z produkčního nasazení.

Transformace souboru web.config

Pokud při publikování potřebujete transformovat web.config (například nastavit proměnné prostředí na základě konfigurace, profilu nebo prostředí), podívejte se na Transformace souboru web.config .

Konfigurace služby IIS

Windows Serverové operační systémy

Povolte roli serveru webový server (IIS) a vytvořte služby rolí.

  1. V nabídce Spravovat použijte průvodce přidáním rolí a funkcí nebo odkaz v Správce serveru. V kroku Role serveru zaškrtněte políčko u možnosti Webový server (IIS).

    Role IIS webového serveru je vybraná v kroku Vybrat role serveru.

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

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

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

    WebSockets (volitelné)
    WebSockets se podporuje ASP.NET Core 1.1 nebo novějším. Pokud chcete povolit webSockety, rozbalte následující uzly: Vývoj > aplikací webového serveru. Vyberte funkci protokolu WebSocket. Další informace najdete v tématu WebSockets.

  3. Pokračujte krokem Potvrzení a nainstalujte roli a služby webového serveru. Po instalaci role webového serveru (IIS) se nevyžaduje restartování serveru nebo služby IIS.

Windows desktopových operačních systémů

Povolte konzolu pro správu služby IIS a webovou službu.

  1. Přejděte na Ovládací panely Programy a funkce Windows zapněte nebo vypněte > > > (levá strana obrazovky).

  2. Otevřete uzel Internetová informační služba. Otevřete uzel Nástroje pro správu webu.

  3. Zaškrtněte políčko konzoly pro správu služby IIS.

  4. Zaškrtněte políčko pro službu World Wide Web Services.

  5. Přijměte výchozí funkce pro služby World Wide Web Services nebo přizpůsobte funkce služby IIS.

    Windows Ověřování (volitelné)
    Pokud chcete Windows ověřování, rozbalte následující uzly: World Wide Web Services > Security. Vyberte funkci Windows ověřování. Další informace najdete v tématu Windows a <windowsAuthentication> Konfigurace Windows ověřování.

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

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

Konzola pro správu služby IIS a webové služby jsou vybrané v Windows funkcí.

Instalace sady .NET Core Hosting Bundle

Nainstalujte do hostitelského systému sadu .NET Core Hosting Bundle. Sada nainstaluje modul runtime .NET Core, knihovnu .NET Core a ASP.NET Core Module. Modul umožňuje, aby ASP.NET Core aplikace běží za službou IIS.

Důležité

Pokud je sada hostitelů nainstalovaná před službou IIS, je nutné instalaci sady opravit. Po instalaci služby IIS znovu spusťte instalační program sady hostingu.

Pokud je sada hostingu nainstalovaná po instalaci 64bitové (x64) verze .NET Core, sady SDK se můžou zdát, že chybí (nebyly zjištěny žádné sady.NET CoreSDK). Pokud chcete tento problém vyřešit, podívejte se na . řešení potíží a ladění ASP.NET Corech projektů

Stáhnout

  1. Přejděte na stránku Stáhnout .NET Core.
  2. Vyberte požadovanou verzi .NET Core.
  3. Ve sloupci Spustit aplikace – Modul runtime vyhledejte řádek požadované verze modulu runtime .NET Core.
  4. Stáhněte instalační program pomocí odkazu hostující sada .

Upozornění

Některé instalační programy obsahují verze vydaných verzí, které dosáhly svého konce životnosti (konce řádku) a které už nejsou podporovány společností Microsoft. Další informace najdete v tématu zásady podpory.

Instalace hostitelského balíčku

  1. Spusťte instalační program na serveru. 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čit instalaci modulu ASP.NET Core.
    • OPT_NO_RUNTIME=1: Přeskočí instalace modulu runtime .NET Core. Používá se, když Server hostuje jenom samostatná nasazení (SCD).
    • OPT_NO_SHAREDFX=1: přeskočí instalace sdíleného rozhraní ASP.NET shared (ASP.NET runtime). Používá se, když Server hostuje jenom samostatná nasazení (SCD).
    • OPT_NO_X86=1: Přeskočí instalace běhových prostředí x86. Tento parametr použijte, pokud víte, že nebudete hostovat 32 aplikace. Pokud existuje možnost, že v budoucnosti budete hostovat jak 32, tak i 64 aplikace, tento parametr nepoužívejte a nainstalujete oba moduly runtime.
    • OPT_NO_SHARED_CONFIG_CHECK=1: Pokud je sdílená konfigurace (applicationHost.config) na stejném počítači jako instalace služby IIS, zakažte kontrolu použití sdílené konfigurace služby IIS. k dispozici jenom pro ASP.NET Core 2,2 nebo novější instalační programy hostujících prostředků. Další informace naleznete v tématu Modul ASP.NET Core.
  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
    

    Restartování služby IIS zabere změny v systémové cestě, což je proměnná prostředí vytvořená instalačním programem.

Při instalaci hostujícího balíčku není nutné ručně zastavit jednotlivé weby ve službě IIS. Hostované aplikace (weby IIS) se restartují po restartování služby IIS. Aplikace se po přijetí první žádosti spustí znovu, včetně modulu inicializace aplikace.

ASP.NET Core přijímá postup při přeposílání pro vydání oprav pro balíčky sdílených balíčků rozhraní. Když se aplikace hostované službou IIS restartují se službou IIS, aplikace při přijetí jejich prvního požadavku načtou nejnovější verze oprav jejich odkazovaných balíčků. Pokud se služba IIS nerestartuje, aplikace se restartují a projeví se chování při přeposílání, když se jejich pracovní procesy recyklují a obdrží první požadavek.

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.

Při publikování pomocí Visual Studio nainstalovat Nasazení webu

Při nasazování aplikací na servery s nasazení webunainstalujte na server nejnovější verzi nasazení webu. Chcete-li nainstalovat Nasazení webu, použijte instalační program webové platformy (WebPI) nebo si instalační program Získejte přímo z webu služby Stažení softwaru. Upřednostňovanou metodou je použití 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é složky a soubory aplikace. V následujícím kroku je jako fyzická cesta k aplikaci služba IIS poskytována jako cesta k této složce. Další informace o složce nasazení aplikace a rozložení souborů naleznete v tématu ASP.NET Core adresářové struktury .

  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 lokality a nastavte fyzickou cestu ke složce pro nasazení aplikace. Zadejte konfiguraci vazby a vytvořte web výběrem OK:

    Zadejte název lokality, fyzickou cestu a název hostitele v kroku přidat web.

    Upozornění

    Nelze použít vazby zástupných znaků na nejvyšší úrovni ( http://*:80/ a http://+:80 ). Vazby zástupných znaků nejvyšší úrovně můžou aplikaci otevřít pro slabá místa zabezpečení. To platí pro silné i slabé zástupné znaky. Místo zástupných znaků použijte explicitní názvy hostitelů. Vazba zástupných znaků subdomény (například *.mysub.com ) nemá toto bezpečnostní riziko, pokud ovládáte celou nadřazenou doménu (na rozdíl od *.com , která je zranitelná). Další informace najdete v části rfc7230 část-5,4 .

  4. V uzlu serveru vyberte fondy aplikací.

  5. klikněte pravým tlačítkem myši 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 bez spravovaného kódu:

    Pro verzi .NET CLR nenastavte žádný spravovaný kód.

    ASP.NET Core běží v samostatném procesu a spravuje modul runtime. ASP.NET Core nespoléhá na načítání clr desktopových aplikací (.net clr) — , modul clr (Common Language Runtime) pro .net core se spouští k hostování aplikace v pracovním procesu. Nastavení verze .NET CLR na žádný spravovaný kód není volitelné, ale doporučuje se.

  7. ASP.NET Core 2,2 nebo novější: 64 u samostatného nasazeného nasazení (x64), které používá model hostování v rámci procesu, zakažte fond aplikací pro procesy 32 (x86).

    v bočním panelu akce správce služby IIS > fondy aplikací vyberte možnost nastavit výchozí hodnoty fondu aplikací nebo upřesnit Nastavení. Vyhledejte možnost povolit 32 – bitové aplikace a nastavte hodnotu na False . Toto nastavení nemá vliv na aplikace nasazené pro hostování mimo proces.

  8. Potvrďte, že identita modelu procesu má správná oprávnění.

    Pokud se výchozí identita fondu aplikací (modelu procesu > Identity ) změní z applicationPool Identity 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. Například fond aplikací vyžaduje přístup pro čtení a zápis ke složkám, kde aplikace čte a zapisuje soubory.

Windows Konfigurace ověřování (volitelné)
další informace najdete v tématu konfigurace ověřování Windows.

Nasazení aplikace

Nasaďte aplikaci do složky fyzické cesty služby IIS, která byla navázána v části Vytvoření webu služby IIS . Nasazení webu je doporučeným mechanismem pro nasazení, ale existuje několik možností pro přesun aplikace ze složky publikování projektu do složky pro nasazení hostitelského systému.

Nasazení webu s Visual Studio

v tématu Visual Studio publikování profilů pro ASP.NET Core nasazení aplikací se dozvíte, jak vytvořit publikační profil pro použití s Nasazení webu. pokud poskytovatel hostingu poskytuje profil publikování nebo podporu pro jeho vytvoření, stáhněte si jeho profil a importujte ho pomocí dialogového okna publikování Visual Studio:

Stránka publikovat dialog

Nasazení webu mimo Visual Studio

Nasazení webu lze použít také mimo Visual Studio z příkazového řádku. Další informace najdete v tématu Nástroj pro nasazení webu.

Alternativy k Nasazení webu

K přesunu aplikace do hostitelského systému, jako je ruční kopírování, xcopy, Robocopynebo PowerShell, použijte libovolný z několika způsobů.

další informace o nasazení ASP.NET Core do služby iis najdete v části prostředky nasazení pro správce služby iis .

Procházet web

Po nasazení aplikace do hostitelského systému vytvořte žádost jednomu z veřejných koncových bodů aplikace.

V následujícím příkladu je lokalita svázána s názvem hostitele služby IIS www.mysite.com na portu 80 . Odeslala se žádost http://www.mysite.com :

prohlížeč Microsoft Edge načetl spouštěcí stránku služby IIS.

Uzamčené soubory nasazení

Soubory ve složce pro nasazení jsou zamčené, když je aplikace spuštěná. Uzamčené soubory nejde během nasazování přepsat. Chcete-li uvolnit uzamčené soubory v nasazení, zastavte fond aplikací pomocí jednoho z následujících přístupů:

  • V souboru projektu použijte Nasazení webu a odkaz Microsoft.NET.Sdk.Web . Soubor app_offline.htm se umístí do kořenové složky adresáře webové aplikace. když je soubor přítomen, modul ASP.NET Core aplikaci korektně ukončí a během nasazování zachová app_offline.htm soubor. další informace najdete v referenčních informacích k konfiguraci modulu ASP.NET Core.

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

  • Použití PowerShellu k vyřazení app_offline.htm (vyžaduje 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

sada ASP.NET Core Data Protection stack je používána několika ASP.NET Core middlewary, včetně middlewaru používaného při ověřování. I v případě, že rozhraní API ochrany dat není voláno uživatelským kódem, je třeba nakonfigurovat ochranu dat pomocí skriptu nasazení nebo v uživatelském kódu, aby bylo možné vytvořit 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 klíčového prstence při restartu aplikace uloží do paměti:

  • U cookie tokenů ověřování na základě jsou neověřené.
  • Uživatelé se musí znovu přihlásit na svůj další požadavek.
  • Data chráněná pomocí Key ringu už nebude možné dešifrovat. to může zahrnovat CSRF tokeny a ASP.NET Core MVC TempData cookie s.

Pokud chcete v rámci služby IIS nakonfigurovat ochranu dat a zachovat přitom klíčového prstence, použijte některý z následujících přístupů:

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

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

    pro samostatnou instalaci služby IIS, která není typu webfarma, se dá skript Provision-AutoGenKeys.ps1 powershellu pro ochranu dat použít pro každý fond aplikací, který se používá v aplikaci ASP.NET Core. Tento skript vytvoří klíč registru v registru HKLM, který je přístupný jenom pro účet pracovního procesu fondu aplikací aplikace. Klíče jsou v klidovém stavu zašifrované pomocí rozhraní DPAPI s klíčem celého počítače.

    Ve scénářích webové farmy může být aplikace nakonfigurovaná tak, aby používala cestu UNC k uložení svého prstence s klíčem pro ochranu dat. Ve výchozím nastavení nejsou klíče ochrany dat šifrované. ujistěte se, že oprávnění k souborům pro sdílenou síťovou složku jsou omezená na účet Windows, pod kterým je aplikace spuštěná. K ochraně neaktivních klíčů je možné použít certifikát x509. Vezměte v úvahu mechanismus, který umožní uživatelům odeslat 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, kde je aplikace uživatele spuštěna. podrobnosti najdete v tématu konfigurace ochrany ASP.NET Core dat .

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

    toto nastavení je v části Model procesu v rámci pokročilé Nastavení fondu aplikací. Nastavte načíst profil uživatele na True . Pokud je nastaveno na True , klíče jsou uloženy v adresáři profilu uživatele a chráněny pomocí rozhraní DPAPI s klíčem specifickým pro uživatelský účet. klíče jsou trvale uložené do složky % LOCALAPPDATA%/ASP.NET/DataProtection-Keys .

    Musí být povolený i atribut setProfileEnvironment fondu aplikací. Výchozí hodnota setProfileEnvironment je true . V některých scénářích (například Windows OS) setProfileEnvironment je nastavena na false . Pokud se klíče neukládají 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. Potvrďte, že setProfileEnvironment atribut není přítomen, přičemž výchozí hodnota je true , nebo explicitně nastavte hodnotu atributu na true .
  • Použití systému souborů jako úložiště pro Key Ring

    Upravte kód aplikace tak, aby používal systém souborů jako úložiště ve službě Key Ring. K ochraně služby Key Ring použijte certifikát x509 a ujistěte se, že certifikát je 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ě.

    Při použití služby IIS ve webové farmě:

    • Použijte sdílenou složku, ke které mají přístup všechny počítače.
    • Nasaďte do každého počítače certifikát x509. Konfigurace ochrany dat v kódu.
  • Nastavení zásad pro ochranu dat na úrovni počítače

    Systém ochrany dat má omezená podpora pro nastavení výchozích zásad pro všechny aplikace, které využívají rozhraní API pro ochranu dat. Další informace naleznete v tématu ASP.NET Core Ochrana dat.

Virtuální adresáře

aplikace ASP.NET Core nepodporují virtuální adresáře služby IIS . Aplikace může být hostována jako dílčí aplikace.

Dílčí aplikace

aplikace ASP.NET Core může být hostovaná jako podaplikace služby IIS (dílčí aplikace). Cesta k dílčí aplikaci se stala 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 procházení dílčí aplikace se obdrží interní chyba serveru 500,19 , na kterou odkazuje poškozený konfigurační soubor.

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

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

při hostování neASP.NET Core dílčí aplikace pod ASP.NET Core aplikace 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>

Propojení statických prostředků v rámci dílčí aplikace by měla používat notaci vlnovku ( ~/ ). Znak tildy vlnovkou spustí pomocnou nápovědu k předřazení pathbase dílčí aplikace na vykreslený relativní odkaz. V případě dílčí aplikace na /subapp_path je obrázek propojený s objektem src="~/image.png" vykreslen jako src="/subapp_path/image.png" . Middleware statických souborů kořenové aplikace nezpracovává požadavek na statický soubor. Požadavek zpracovává middleware statických souborů v dílčí aplikaci.

Pokud je atribut statického prostředku src nastavený na absolutní cestu (například src="/image.png" ), odkaz se vykreslí bez pathbase dílčí aplikace. Middleware statických souborů v kořenové aplikaci se pokusí o poskytování assetu z kořenového adresáře webukořenové aplikace, což má za následek 404 – nenalezené odpovědi, pokud není k dispozici statický prostředek z kořenové aplikace.

hostování aplikace ASP.NET Core jako dílčí aplikace v jiné aplikaci ASP.NET Core:

  1. Vytvořte fond aplikací pro dílčí aplikaci. Nastavte verzi .NET CLR na žádný spravovaný kód , protože základní modul CLR (Common Language Runtime) pro .NET Core se spouští k hostování aplikace v pracovním procesu, ne CLR Desktop (.NET CLR).

  2. Přidejte kořenovou lokalitu ve Správci služby IIS pomocí dílčí aplikace do složky v kořenové lokalitě.

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

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

Přiřazení samostatného fondu aplikací k dílčí aplikaci je požadavek při použití modelu hostování v rámci procesu.

další informace o modelu hostování v rámci procesu a konfiguraci modulu ASP.NET Core naleznete v tématu Modul ASP.NET Core .

Konfigurace služby IIS pomocí web.config

konfigurace služby iis má vliv na <system.webServer> část web.config pro scénáře služby iis, které jsou funkční pro ASP.NET Core aplikace s modulem ASP.NET Core. Například konfigurace služby IIS je funkční pro dynamickou kompresi. pokud je služba IIS nakonfigurovaná na úrovni serveru, aby používala dynamickou kompresi, <urlCompression> element v souboru web.config aplikace ho může pro ASP.NET Core aplikaci zakázat.

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

Informace o nastavení proměnných prostředí pro jednotlivé aplikace spuštěné v izolovaných fondech aplikací (podporované pro IIS 10,0 nebo novější) najdete v části AppCmd.exe příkazu tématu proměnné <environmentVariables> prostředí v referenční dokumentaci služby IIS.

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

konfigurační oddíly ASP.NET 4. x aplikace v web.config nejsou používány ASP.NET Core aplikacemi pro konfiguraci:

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

aplikace ASP.NET Core jsou nakonfigurovány pomocí jiných poskytovatelů konfigurace. Další informace najdete v tématu Konfigurace.

Fondy aplikací

Při hostování více webů na serveru doporučujeme vzájemně izolovat aplikace tím, že spustíte každou aplikaci ve svém vlastním fondu aplikací. Do této konfigurace se nastaví dialogové okno Přidat web do služby IIS. Když je zadaný název lokality , text se automaticky přenese do textového pole fondu aplikací . Po přidání webu se vytvoří nový fond aplikací s názvem lokality.

Fond aplikací Identity

Účet identity fondu aplikací umožňuje aplikaci běžet v rámci jedinečného účtu, aniž by bylo nutné vytvářet a spravovat domény nebo místní účty. Ve službě IIS 8,0 nebo novější služba pracovní proces správce služby IIS (WAS) vytvoří virtuální účet s názvem nového fondu aplikací a ve výchozím nastavení spustí pracovní procesy fondu aplikací v rámci tohoto účtu. v konzole pro správu služby IIS v části upřesnit Nastavení fondu aplikací zajistěte, aby byl Identity nastaven na použití Identity ApplicationPool:

Dialogové okno Upřesnit nastavení fondu aplikací

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

Pokud pracovní proces služby IIS vyžaduje zvýšený přístup k aplikaci, upravte seznam Access Control (ACL) pro adresář obsahující aplikaci:

  1. otevřete aplikaci Windows Explorer a přejděte do adresáře.

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

  3. Na kartě zabezpečení vyberte tlačítko Upravit a pak klikněte na tlačítko Přidat .

  4. Vyberte tlačítko umístění a ujistěte se, že je vybraný systém.

  5. Do pole Zadejte názvy objektů k výběru oblasti zadejte \<app_pool_name služby IIS AppPool> . Vyberte tlačítko pro kontrolu názvů . Pro službu DefaultAppPool ověřte názvy pomocí služby IIS AppPool\DefaultAppPool. Když je vybráno tlačítko pro kontrolu názvů , hodnota DefaultAppPool je uvedena v oblasti názvy objektů. Není možné zadat název fondu aplikací přímo do oblasti názvy objektů. Při kontrole názvu objektu použijte \<APP_POOL_NAME>formátu IIS AppPool .

    Dialogová okna pro výběr uživatelů nebo skupin pro složku aplikace: název fondu aplikací "DefaultAppPool" se připojí k "rozhraní IIS AppPool" " v oblasti názvy objektů před výběrem "kontrolovat jména".

  6. Vyberte OK.

    Dialogové okno Pro výběr uživatelů nebo skupin pro složku aplikace: Po výběru možnosti Zkontrolovat názvy se v oblasti názvů objektů zobrazí název objektu DefaultAppPool.

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

Přístup je možné udělit také na příkazovém řádku pomocí nástroje ICACLS. Když jako příklad použijete DefaultAppPool, použije se následující příkaz:

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

Další informace najdete v tématu o ikálech.

Podpora HTTP/2

Http/2 se podporuje pro nasazení mimo proces, která splňují následující základní požadavky:

  • Windows Server 2016/Windows 10 nebo novější; IIS 10 nebo novější
  • Připojení k veřejnému hraničnímu serveru používají protokol HTTP/2, ale připojení reverzního proxy serveru k Kestrel serveru používá protokol HTTP/1.1.
  • Cílová rozhraní: Nelze použít pro nasazení mimo proces, protože připojení HTTP/2 zpracovává výhradně služba IIS.
  • Připojení TLS 1.2 nebo novější

Pokud je vytvořeno připojení HTTP/2, protokol HttpRequest.Protocol hlásí HTTP/1.1 .

Ve výchozím nastavení je povolený protokol HTTP/2. Připojení se vrátí k http/1.1, pokud není vytvořeno připojení HTTP/2. Další informace o konfiguraci HTTP/2 s nasazeními 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 ASP.NET Core aplikací, které cílí na .NET Framework.

U ASP.NET Core aplikace, která cílí na .NET Framework, se požadavky OPTIONS ve výchozím nastavení ve službě IIS do aplikace předá. Informace o tom, jak nakonfigurovat obslužné rutiny služby IIS aplikace v web.config tak, aby předaly požadavky OPTIONS, najdete v tématu Povolení žádostí mezi zdroji ve webovém rozhraní ASP.NET API 2: Jak CORS funguje.

Prostředky nasazení pro správce služby IIS

Další zdroje informací