Pokročilá konfigurace základního modulu ASP.NET a služby IIS
Poznámka:
Toto není nejnovější verze tohoto článku. Aktuální verzi najdete v tomto článku ve verzi .NET 9.
Upozorňující
Tato verze ASP.NET Core se už nepodporuje. Další informace najdete v zásadách podpory .NET a .NET Core. Aktuální verzi najdete v tomto článku ve verzi .NET 9.
Důležité
Tyto informace se týkají předběžného vydání produktu, který může být podstatně změněn před komerčním vydáním. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Aktuální verzi najdete v tomto článku ve verzi .NET 9.
Tento článek popisuje pokročilé možnosti konfigurace a scénáře pro modul ASP.NET Core a IIS.
Úprava velikosti zásobníku
Platí pouze při použití modelu hostování v procesu.
Nakonfigurujte velikost spravovaného zásobníku stackSize
pomocí nastavení v bajtech v web.config
souboru. Výchozí velikost je 1 048 576 bajtů (1 MB). Následující příklad změní velikost zásobníku na 2 MB (2 097 152 bajtů):
<aspNetCore processPath="dotnet"
arguments=".\MyApp.dll"
stdoutLogEnabled="false"
stdoutLogFile="\\?\%home%\LogFiles\stdout"
hostingModel="inprocess">
<handlerSettings>
<handlerSetting name="stackSize" value="2097152" />
</handlerSettings>
</aspNetCore>
Zakázání obměně konfigurace
Nastavení disallowRotationOnConfigChange
je určené pro modré nebo zelené scénáře, kdy by změna globální konfigurace neměla způsobit recyklaci všech webů. Pokud je tento příznak pravdivý, způsobí to recyklaci pouze změny související se samotným webem. Web například recykluje, pokud se jeho web.config změní nebo něco, co je relevantní pro cestu webu z pohledu služby IIS. Obecná změna souboru applicationHost.config by ale nezpůsobovala recyklaci aplikace. Následující příklad nastaví toto nastavení na true:
<aspNetCore processPath="dotnet"
arguments=".\MyApp.dll"
stdoutLogEnabled="false"
stdoutLogFile="\\?\%home%\LogFiles\stdout"
hostingModel="inprocess">
<handlerSettings>
<handlerSetting name="disallowRotationOnConfigChange" value="true" />
</handlerSettings>
</aspNetCore>
Toto nastavení odpovídá rozhraní API. ApplicationPoolRecycling.DisallowRotationOnConfigChange
Snížení pravděpodobnosti 503 během recyklace aplikace
Ve výchozím nastavení dochází k jednomu druhému zpoždění mezi tím, kdy služba IIS oznámí recyklaci nebo vypnutí a když ANCM řekne spravovanému serveru, aby zahájil vypnutí. Zpoždění je možné konfigurovat prostřednictvím ANCM_shutdownDelay
proměnné prostředí nebo nastavením nastavení obslužné rutiny shutdownDelay
. Obě hodnoty jsou v milisekundách. Zpoždění je primárně snížit pravděpodobnost závodu, kde:
- Služba IIS nezačala začínat požadavky na řazení do fronty pro přechod do nové aplikace.
- ANCM začne odmítat nové požadavky, které přicházejí do staré aplikace.
Toto nastavení neznamená, že příchozí požadavky budou o tuto částku zpožděné. Nastavení značí, že stará instance aplikace se po vypršení časového limitu začne vypínat. Pomalejší počítače nebo počítače s těžším využitím procesoru můžou tuto hodnotu potřebovat upravit, aby se snížila pravděpodobnost 503.
Následující příklad nastaví zpoždění na 5 sekund:
<aspNetCore processPath="dotnet"
arguments=".\MyApp.dll"
stdoutLogEnabled="false"
stdoutLogFile="\\?\%home%\LogFiles\stdout"
hostingModel="inprocess">
<handlerSettings>
<handlerSetting name="shutdownDelay" value="5000" />
</handlerSettings>
</aspNetCore>
Konfigurace proxy serveru používá protokol HTTP a párovací token.
Týká se pouze hostování mimo proces.
Proxy server vytvořený mezi modulem ASP.NET Core a Kestrel používá protokol HTTP. Neexistuje žádné riziko odposlouchávání provozu mezi modulem a Kestrel z umístění mimo server.
Párovací token se používá k zajištění toho, že žádosti přijaté službou Kestrel IIS byly zasílané službou IIS a nepřišly z jiného zdroje. Token párování se vytvoří a nastaví do proměnné prostředí (ASPNETCORE_TOKEN
) modulu. Token párování se také nastaví do hlavičky (MS-ASPNETCORE-TOKEN
) pro každý požadavek naxied. Middleware služby IIS kontroluje každý požadavek, který obdrží, a ověří, že hodnota hlavičky spárujícího tokenu odpovídá hodnotě proměnné prostředí. Pokud se hodnoty tokenu neshodují, požadavek se zaprotokoluje a odmítne. Proměnná prostředí párovacího tokenu a provoz mezi modulem a Kestrel nejsou přístupné z umístění mimo server. Bez znalosti hodnoty párového tokenu nemůže cyberattacker odesílat žádosti, které obcházejí kontrolu v middlewaru služby IIS.
základní modul ASP.NET se sdílenou konfigurací služby IIS
Instalační program základního TrustedInstaller
modulu ASP.NET běží s oprávněními účtu. Vzhledem k tomu, že místní systémový účet nemá oprávnění ke změně cesty ke sdílené složce používané sdílenou konfigurací služby IIS, vyvolá instalační program chybu odepření přístupu při pokusu o konfiguraci nastavení modulu v applicationHost.config
souboru ve sdílené složce.
Pokud používáte sdílenou konfiguraci služby IIS na stejném počítači jako instalace služby IIS, spusťte instalační program sady ASP.NET Core Hosting Bundle s parametrem nastaveným OPT_NO_SHARED_CONFIG_CHECK
na 1
:
dotnet-hosting-{VERSION}.exe OPT_NO_SHARED_CONFIG_CHECK=1
Pokud cesta ke sdílené konfiguraci není na stejném počítači jako instalace služby IIS, postupujte takto:
- Zakažte sdílenou konfiguraci služby IIS.
- Spusťte instalační program.
- Export aktualizovaného
applicationHost.config
souboru do sdílené složky - Znovu povolte sdílenou konfiguraci služby IIS.
Ochrana dat
Několik middlewarů ASP.NET Core, včetně middlewaru sloužícímu k ověřování, využívá stack ochrany dat ASP.NET Core. I když se v uživatelském kódu nevolají rozhraní Data Protection API, ve skriptu nasazení nebo v uživatelském kódu by měla být nakonfigurovaná ochrana dat, aby se vytvořilo trvalé úložiště kryptografických klíčů. Pokud ochrana dat není nakonfigurovaná, klíče se uchovávají v paměti a při restartování aplikace se zahodí.
Pokud je vyzvánění klíče ochrany dat při restartování aplikace uložené v paměti:
- Všechny ověřovací tokeny založené na souborech cookie se zneplatní.
- Uživatelé se při dalším požadavku musí přihlásit znovu.
- Veškerá data chráněná daným svazkem klíčů již není možné dešifrovat. To může zahrnovat tokeny CSRF a soubory cookie ASP.NET Core MVC TempData.
Pokud chcete v rámci služby IIS nakonfigurovat ochranu dat pro zachování svazku klíčů, použijte jeden z následujících postupů:
Vytvoření klíčů registru ochrany dat
Klíče ochrany dat používané aplikacemi ASP.NET Core jsou uložené v registru externím pro aplikace. Pokud chcete zachovat klíče pro danou aplikaci, vytvořte klíče registru pro fond aplikací.
V případě samostatných instalací služby IIS mimo webovou farmu je možné pro jednotlivé fondy aplikací používané v aplikaci ASP.NET Core použít skript PowerShellu pro ochranu dat Provision-AutoGenKeys.ps1. Tento skript vytvoří klíč registru v registru HKLM, který je přístupný pouze pro účet pracovního procesu fondu aplikací aplikace. Klíče se šifrují pomocí rest ROZHRANÍ DPAPI s klíčem na úrovni počítače.
Ve scénářích webové farmy je možné aplikaci nakonfigurovat tak, aby používala cestu UNC k uložení okruhu klíče ochrany dat. Ve výchozím nastavení nejsou klíče šifrované. Ujistěte se, že jsou oprávnění k souborům pro sdílenou síť omezena na účet Windows, pod kterým aplikace běží. Certifikát X509 lze použít k ochraně klíčů na adrese rest. Zvažte mechanismus, který uživatelům umožní nahrávat certifikáty. Umístěte certifikáty do důvěryhodného úložiště certifikátů uživatele a ujistěte se, že jsou dostupné na všech počítačích, na kterých běží aplikace uživatele. Další informace najdete v tématu Konfigurace ASP.NET základní ochrany dat.
Konfigurace fondu aplikací služby IIS pro načtení profilu uživatele
Toto nastavení najdete v části Upřesňující nastavení fondu aplikací v části Model zpracování. Nastavte možnost Načíst profil uživatele na hodnotu
True
. Pokud je nastavená hodnotaTrue
, klíče se uchovávají v adresáři profilu uživatele a jsou chráněné pomocí rozhraní Data Protection API a klíče specifického pro daný uživatelský účet. Klíče se zachovají do%LOCALAPPDATA%/ASP.NET/DataProtection-Keys
složky.Musí být také povolen atribut fondu
setProfileEnvironment
aplikací. Výchozí hodnota atributusetProfileEnvironment
jetrue
. V některých scénářích (například v operačním systému Windows) je atributsetProfileEnvironment
nastavený na hodnotufalse
. Pokud se klíče neuchovávají v adresáři profilu uživatele podle očekávání:- Přejděte do složky
%windir%/system32/inetsrv/config
. - Otevřete soubor
applicationHost.config
. - Vyhledejte element
<system.applicationHost><applicationPools><applicationPoolDefaults><processModel>
. - Ověřte, že není k dispozici atribut
setProfileEnvironment
, aby se použila výchozí hodnotatrue
, nebo explicitně nastavte hodnotu tohoto atributu natrue
.
- Přejděte do složky
Použití systému souborů jako úložiště svazku klíčů
Upravte kód aplikace tak, aby se jako úložiště svazku klíčů používal systém souborů. K zajištění ochrany svazku klíčů použijte certifikát X509 a ujistěte se, že se jedná o důvěryhodný certifikát. Pokud je certifikát podepsaný svým držitelem, umístěte certifikát do důvěryhodného kořenového úložiště.
Pokud používáte službu IIS na webové farmě:
- Použijte sdílenou složku, ke které mají přístup všechny počítače.
- Na každý počítač nasaďte certifikát X509. Nakonfigurujte ochranu dat v kódu.
Nastavení zásad pro ochranu dat pro celý počítač
Systém Ochrany dat má omezenou podporu pro nastavení výchozích zásad pro všechny aplikace, které využívají rozhraní API ochrany dat. Další informace najdete v tématu Přehled ochrany dat ASP.NET Core.
Konfigurace služby IIS
Serverové operační systémy Windows
Povolte roli serveru Webový server (služba IIS) a vytvořte služby role.
Použijte průvodce přidáním rolí a funkcí z nabídky Správa nebo odkazu ve Správci serveru. V kroku Role serveru zaškrtněte políčko u možnosti Webový server (služba IIS).
Po kroku Funkce se načte krok Služby role pro roli Webový server (služba IIS). Vyberte požadované služby role služby IIS nebo přijměte uvedené výchozí služby role.
Integrované ověřování Windows (volitelné)
Pokud chcete povolit Integrované ověřování Windows, rozbalte následující uzly: Webový server>Zabezpečení. Vyberte funkci Integrované ověřování Windows. Další informace najdete v tématu Integrované ověřování Windows<windowsAuthentication>
a Konfigurace Integrovaného ověřování Windows.WebSocket (volitelné)
Protokol WebSocket se podporuje v ASP.NET Core 1.1 nebo novější verzi. Pokud chcete povolit protokol WebSocket, rozbalte následující uzly: Webový server>Vývoj aplikací. Vyberte funkci Protokol WebSocket. Další informace najdete v tématu WebSocket.Pokračujte krokem Potvrzení a nainstalujte roli a služby webového serveru. Po dokončení instalace role Webový server (služba IIS) se nevyžaduje restartování serveru ani služby IIS.
Desktopové operační systémy Windows
Povolte konzolu pro správu služby IIS a webové služby.
Přejděte do části Ovládací panely>Programy>Programy a funkce>Zapnout nebo vypnout funkce systému Windows (na levé straně obrazovky).
Otevřete uzel Internetová informační služba. Otevřete uzel Nástroje webové správy.
Zaškrtněte políčko u možnosti Konzola pro správu služby IIS.
Zaškrtněte políčko u možnosti Webové služby.
Přijměte výchozí funkce pro Webové služby nebo si přizpůsobte funkce služby IIS.
Integrované ověřování Windows (volitelné)
Pokud chcete povolit Integrované ověřování Windows, rozbalte následující uzly: Webové služby>Zabezpečení. Vyberte funkci Integrované ověřování Windows. Další informace najdete v tématu Integrované ověřování Windows<windowsAuthentication>
a Konfigurace Integrovaného ověřování Windows.WebSocket (volitelné)
Protokol WebSocket se podporuje v ASP.NET Core 1.1 nebo novější verzi. Pokud chcete povolit protokol WebSocket, rozbalte následující uzly: Webové služby>Funkce pro vývoj aplikací. Vyberte funkci Protokol WebSocket. Další informace najdete v tématu WebSocket.Pokud instalace služby IIS vyžaduje restartování, restartujte systém.
Virtuální adresáře
Aplikace ASP.NET Core nepodporují virtuální adresáře služby IIS. Aplikaci je možné hostovat jako dílčí aplikaci.
Dílčí aplikace
Aplikaci ASP.NET Core je možné hostovat jako dílčí aplikaci služby IIS. Cesta k dílčí aplikaci se stane součástí adresy URL kořenové aplikace.
Statické odkazy na prostředky v rámci dílčí aplikace by měly v MVC a Razor Pages používat vlnovku lomítko (~/
). Notace znaku tildy s lomítkem aktivuje pomocnou rutinu značky, která před vykreslený relativní odkaz přidá základ cesty dílčí aplikace. V případě dílčí aplikace v cestě /subapp_path
se odkaz na obrázek src="~/image.png"
vykreslí jako src="/subapp_path/image.png"
. Middleware Static File kořenové aplikace nezpracovává požadavky na statické soubory. Tyto požadavky zpracovává middleware Static File dílčí aplikace.
Poznámka:
Razor komponenty (.razor
) by neměly používat vlnovku lomítko. Další informace najdete v dokumentaci k Blazor základní cestě aplikace.
Pokud je atribut src
statického prostředku nastavený na absolutní cestu (například src="/image.png"
), odkaz se vykreslí bez základu cesty dílčí aplikace. Middleware Static File kořenové aplikace se pokusí získat prostředek z kořenového adresáře webu kořenové aplikace, což bude mít za následek odpověď 404 – Nenalezeno, pokud daný statický prostředek není dostupný z kořenové aplikace.
Hostování aplikace ASP.NET Core jako dílčí aplikace v rámci jiné aplikace ASP.NET Core:
Vytvořte pro dílčí aplikaci fond aplikací. Nastavte verzi .NET CLR na hodnotu Bez spravovaného kódu, protože pro účely hostování aplikace v pracovním procesu se spustí modul CoreCLR (Core Common Language Runtime) pro .NET Core, a ne desktopový modul CLR (.NET CLR).
Přidejte kořenový web s dílčí aplikací v podsložce do Správce služby IIS.
Ve Správci služby IIS klikněte pravým tlačítkem na složku dílčí aplikace a vyberte Převést na aplikaci.
V dialogovém okně Přidat aplikaci pomocí tlačítka Vybrat u možnosti Fond aplikací přiřaďte dílčí aplikaci fond aplikací, který jste pro ni vytvořili. Vyberte OK.
Přiřazení samostatného fondu aplikací dílčí aplikaci je podmínkou pro použití modelu vnitroprocesového hostování.
Další informace o modelu vnitroprocesového hostování a konfiguraci modulu ASP.NET Core najdete v tématu Modul ASP.NET Core (ANCM) pro službu IIS.
Fondy aplikací
Izolaci fondů aplikací určuje model hostování:
- Vnitroprocesové hostování: Aplikace musí běžet v samostatných fondech aplikací.
- Mimoprocesové hostování: Jednotlivé aplikace doporučujeme od sebe navzájem izolovat tím, že každá aplikace bude běžet ve vlastním fondu aplikací.
V dialogovém okně Přidat web je ve výchozím nastavení nastavený jeden fond aplikací na aplikaci. Text zadaný do pole Název webu se automaticky přenese do textového pole Fond aplikací. Při přidání webu se vytvoří nový fond aplikací s použitím názvu webu.
Identity fondů aplikací
Účet fondu identity aplikací umožňuje aplikaci spouštět pod jedinečným účtem bez nutnosti vytvářet a spravovat domény nebo místní účty. Ve službě IIS 8.0 nebo novější pracovní proces správce služby IIS (WAS) ve výchozím nastavení vytvoří virtuální účet s názvem nového fondu aplikací a spouští pracovní procesy fondu aplikací pod tímto účtem. V konzole pro správu služby IIS v části Upřesnit nastavení fondu aplikací se ujistěte, že je nastavená Identity na použití ApplicationPoolIdentity
:
Proces správy služby IIS vytvoří v systému zabezpečení Windows zabezpečený identifikátor s názvem fondu aplikací. Prostředky je možné zabezpečit pomocí tohoto identitysouboru . Nejedná identity se ale o skutečný uživatelský účet a nezobrazuje se v konzole pro správu uživatelů systému Windows.
Pokud pracovní proces služby IIS vyžaduje k aplikaci přístup se zvýšenými oprávněními, upravte seznam řízení přístupu (ACL) pro adresář obsahující aplikaci:
Otevřete Průzkumníka Windows a přejděte do příslušného adresáře.
Klikněte na adresář pravým tlačítkem a vyberte Vlastnosti.
Na kartě Zabezpečení vyberte tlačítko Upravit a pak tlačítko Přidat.
Vyberte tlačítko Umístění a ujistěte se, že je vybraný systém.
Zadejte
IIS AppPool\{APP POOL NAME}
formát, kde zástupným symbolem{APP POOL NAME}
je název fondu aplikací, do pole Zadejte názvy objektů, které chcete vybrat oblast. Vyberte tlačítko Kontrola názvů. V případě fondu aplikací DefaultAppPool ke kontrole názvů použijteIIS AppPool\DefaultAppPool
. Po výběru tlačítka Kontrola názvů se v oblasti názvů objektů označí hodnotaDefaultAppPool
. Název fondu aplikací není možné zadat přímo do oblasti názvů objektů. Při kontrole názvu objektu použijte formátIIS AppPool\{APP POOL NAME}
, kde zástupný symbol{APP POOL NAME}
je název fondu aplikací.Vyberte OK.
Oprávnění ke čtení a spuštění by měla být ve výchozím nastavení udělena. Podle potřeby udělte další oprávnění.
Přístup je možné udělit také na příkazovém řádku pomocí nástroje ICACLS. V příkladu defaultAppPool slouží následující příkaz k udělení oprávnění ke MyWebApp
čtení a spuštění složky, podsložek a souborů:
ICACLS C:\sites\MyWebApp /grant "IIS AppPool\DefaultAppPool:(OI)(CI)RX"
Další informace najdete v tématu icacls.
Podpora HTTP/2
ASP.NET Core podporuje HTTP/2 v následujících scénářích nasazení služby IIS:
- Probíhá proces
- Windows Server 2016 nebo Windows 10 nebo novější, služba IIS 10 nebo novější
- Připojení přes protokol TLS 1.2 nebo novější
- Mimo proces
- Windows Server 2016 nebo Windows 10 nebo novější, služba IIS 10 nebo novější
- Připojení k veřejnému hraničnímu serveru používají HTTP/2, ale připojení proxy serveru k serveru Kestrel používá HTTP/1.1.
- Připojení přes protokol TLS 1.2 nebo novější
V případě vnitroprocesového nasazení vlastnost HttpRequest.Protocol
po navázání připojení HTTP/2 bude obsahovat hodnotu HTTP/2
. V případě mimoprocesového nasazení vlastnost HttpRequest.Protocol
po navázání připojení HTTP/2 bude obsahovat hodnotu HTTP/1.1
.
Další informace o modelech vnitroprocesového a mimoprocesového hostování najdete v tématu Modul ASP.NET Core (ANCM) pro službu IIS.
Ve výchozím nastavení je protokol HTTP/2 povolený. Pokud není možné navázat připojení HTTP/2, naváže se připojení HTTP/1.1. Další informace o konfiguraci HTTP/2 v nasazeních služby IIS najdete v tématu HTTP/2 ve službě IIS.
Předběžné požadavky CORS
Tato část se týká pouze aplikací ASP.NET Core, které cílí na .NET Framework.
V případě aplikace ASP.NET Core, která cílí na .NET Framework, se ve službě IIS ve výchozím nastavení nepředávají do aplikace požadavky OPTIONS. Informace o konfiguraci obslužných rutin služby IIS aplikace v souboru web.config
pro předávání požadavků OPTIONS najdete v části Povolení požadavků z různých zdrojů v rozhraní ASP.NET Web API 2: Jak funguje CORS.
Modul Inicializace aplikace a časový limit nečinnosti
Při hostování ve službě IIS s využitím modulu ASP.NET Core verze 2:
- Modul Inicializace aplikace: Aplikace hostované vnitroprocesově nebo mimoprocesově je možné nakonfigurovat tak, aby se automaticky spustily v případě restartování pracovního procesu nebo serveru.
- Časový limit nečinnosti: Hostovaný proces aplikace se dá nakonfigurovat tak, aby během období nečinnosti nevyšel časový limit.
Modul Inicializace aplikace
Platí pro aplikace hostované vnitroprocesově i mimoprocesově.
Inicializace aplikace služby IIS je funkce služby IIS, která do aplikace odešle požadavek HTTP, když se spustí nebo recykluje fond aplikací. Tento požadavek aktivuje spuštění aplikace. Služba IIS za účelem inicializace aplikace ve výchozím nastavení odešle požadavek na kořenovou adresu URL aplikace (/
). Další podrobnosti o konfiguraci najdete v části Další zdroje informací.
Ověřte, že je povolená funkce role Inicializace aplikace služby IIS:
Desktopové systémy Windows 7 nebo novější, pokud používáte službu IIS místně:
- Přejděte do části Ovládací panely>Programy>Programy a funkce>Zapnout nebo vypnout funkce systému Windows (na levé straně obrazovky).
- Otevřete uzel Internetová informační služba>Webové služby>Funkce pro vývoj aplikací.
- Zaškrtněte políčko u možnosti Inicializace aplikace.
Windows Server 2008 R2 nebo novější:
- Otevřete Průvodce přidáním rolí a funkcí.
- Na panelu Vybrat služby rolí otevřete uzel Vývoj aplikací.
- Zaškrtněte políčko u možnosti Inicializace aplikace.
K povolení modulu Inicializace aplikace pro web použijte některý z následujících přístupů:
Ve Správci služby IIS:
- Na panelu Připojení vyberte Fondy aplikací.
- V seznamu klikněte pravým tlačítkem na fond aplikací aplikace a vyberte Upřesňující nastavení.
- Výchozí spouštěcí režim je
OnDemand
. Nastavte režim spuštění naAlwaysRunning
hodnotu . Vyberte OK. - Na panelu Připojení otevřete uzel Weby.
- Klikněte pravým tlačítkem na aplikaci a vyberte Spravovat web>Upřesňující nastavení.
- Výchozí nastavení Preload Enabled je
False
. Nastavte možnost Předběžné načtení povoleno naTrue
hodnotu . Vyberte OK.
Pomocí
web.config
, přidejte<applicationInitialization>
element sedoAppInitAfterRestart
sadou natrue
elementy<system.webServer>
v souboru aplikaceweb.config
:<?xml version="1.0" encoding="utf-8"?> <configuration> <location path="." inheritInChildApplications="false"> <system.webServer> <applicationInitialization doAppInitAfterRestart="true" /> </system.webServer> </location> </configuration>
Časový limit nečinnosti
Platí pouze pro aplikace hostované vnitroprocesově.
Pokud chcete zabránit nečinnosti aplikace, pomocí Správce služby IIS nastavte časový limit nečinnosti fondu aplikací:
- Na panelu Připojení vyberte Fondy aplikací.
- V seznamu klikněte pravým tlačítkem na fond aplikací aplikace a vyberte Upřesňující nastavení.
- Výchozí časový limit nečinnosti (minuty) je
20
minuty. Nastavte časový limit nečinnosti (minuty) na0
(nula). Vyberte OK. - Recyklujte pracovní proces.
Pokud chcete zabránit vypršení časového limitu aplikací hostovaných mimoprocesově, použijte některý z následujících přístupů:
- Testujte aplikaci příkazem Ping z externí služby, aby zůstala spuštěná.
- Pokud aplikace hostuje pouze služby na pozadí, nepoužívejte k hostování službu IIS, ale použijte k hostování aplikace ASP.NET Core službu Windows.
Další zdroje informací o modulu Inicializace aplikace a časovém limitu nečinnosti
- Inicializace aplikace služby IIS 8.0
- Inicializace
<applicationInitialization>
aplikace . - Nastavení modelu procesu pro fond
<processModel>
aplikací .
Umístění modulů, schémat a konfiguračních souborů
Modul
IIS (x86/amd64):
%windir%\System32\inetsrv\aspnetcore.dll
%windir%\SysWOW64\inetsrv\aspnetcore.dll
%ProgramFiles%\IIS\Asp.Net Core Module\V2\aspnetcorev2.dll
%ProgramFiles(x86)%\IIS\Asp.Net Core Module\V2\aspnetcorev2.dll
IIS Express (x86/amd64):
%ProgramFiles%\IIS Express\aspnetcore.dll
%ProgramFiles(x86)%\IIS Express\aspnetcore.dll
%ProgramFiles%\IIS Express\Asp.Net Core Module\V2\aspnetcorev2.dll
%ProgramFiles(x86)%\IIS Express\Asp.Net Core Module\V2\aspnetcorev2.dll
Schéma
IIS
%windir%\System32\inetsrv\config\schema\aspnetcore_schema.xml
%windir%\System32\inetsrv\config\schema\aspnetcore_schema_v2.xml
IIS Express
%ProgramFiles%\IIS Express\config\schema\aspnetcore_schema.xml
%ProgramFiles%\IIS Express\config\schema\aspnetcore_schema_v2.xml
Konfigurace
IIS
%windir%\System32\inetsrv\config\applicationHost.config
IIS Express
Visual Studio:
{APPLICATION ROOT}\.vs\config\applicationHost.config
rozhraní příkazového řádku iisexpress.exe:
%USERPROFILE%\Documents\IISExpress\config\applicationhost.config
Soubory najdete vyhledáním aspnetcore
v applicationHost.config
souboru.
Instalace Nasazení webu při publikování pomocí sady Visual Studio
Pokud k nasazování aplikací na servery používáte Nasazení webu, nainstalujte na server nejnovější verzi Nasazení webu. Pokud chcete nainstalovat nasazení webu, přečtěte si téma Stažení služby IIS: Nasazení webu.
Vytvoření webu služby IIS
V hostitelském systému vytvořte složku, která bude obsahovat publikované soubory a složky aplikace. V následujícím kroku se cesta k této složce poskytne službě IIS jako fyzická cesta k aplikaci. Další informace o složce pro nasazení aplikace a rozložení souborů najdete v tématu Adresářová struktura ASP.NET Core.
Ve Správci služby IIS otevřete uzel serveru na panelu Připojení. Klikněte pravým tlačítkem na složku Weby. V místní nabídce vyberte Přidat web.
Zadejte Název webu a nastavte fyzickou cestu ke složce pro nasazení aplikace. Zadejte konfiguraci vazby a výběrem možnosti OK web vytvořte:
Upozorňující
Vazby nejvyšší úrovně se zástupnými znaky (
http://*:80/
ahttp://+:80
) by se neměly používat. Vazby nejvyšší úrovně se zástupnými znaky můžou vaši aplikaci vystavit ohrožení zabezpečení. Týká se to silných i slabých zástupných znaků. Místo zástupných znaků používejte explicitní názvy hostitelů. Vazeb subdomén se zástupnými znaky (například*.mysub.com
) se toto bezpečnostní riziko netýká, pokud máte kontrolu nad celou nadřazenou doménou (na rozdíl od vazby*.com
, která je zranitelná). Další informace najdete v dokumentu RFC 9110: Sémantika HTTP (oddíl 7.2: Hostitel a :autorita).Pod uzlem serveru vyberte Fondy aplikací.
Klikněte pravým tlačítkem na fond aplikací webu a v místní nabídce vyberte Základní nastavení.
V okně Upravit fond aplikací nastavte verzi .NET CLR na hodnotu Bez spravovaného kódu:
ASP.NET Core běží v samostatném procesu a spravuje modul runtime. ASP.NET Core nespoléhá na načítání desktopového modulu CLR (.NET CLR). Pro účely hostování aplikace v pracovním procesu se spustí modul CoreCLR (Core Common Language Runtime) pro .NET Core. Nastavení verze .NET CLR na hodnotu Bez spravovaného kódu je volitelné, ale doporučuje se.
U 32bitového (x86) samostatného nasazení publikovaného s 32bitovou sadou SDK, která používá model hostování v procesu, povolte fond aplikací pro 32bitovou verzi. Ve Správci služby IIS na bočním panelu Připojení přejděte do části Fondy aplikací. Vyberte fond aplikací aplikace. Na bočním panelu Akce vyberte Upřesňující nastavení. Nastavte možnost Povolit 32bitové aplikace na hodnotu
True
.V případě 64bitového (x64) samostatného nasazení , které používá model hostování v procesu, zakažte fond aplikací pro 32bitové procesy (x86). Ve Správci služby IIS na bočním panelu Připojení přejděte do části Fondy aplikací. Vyberte fond aplikací aplikace. Na bočním panelu Akce vyberte Upřesňující nastavení. Nastavte možnost Povolit 32bitové aplikace na hodnotu
False
.
Ověřte, že model identity procesu má správná oprávnění.
Pokud se výchozí hodnota identity fondu aplikací (modelIdentity> procesu) změní z ApplicationPoolIdentity na jinouidentity, ověřte, že nový identity má požadovaná oprávnění pro přístup ke složce, databázi a dalším požadovaným prostředkům aplikace. Fond aplikací například vyžaduje oprávnění ke čtení a zápisu ve složkách, ve kterých aplikace čte a zapisuje soubory.
Konfigurace Integrovaného ověřování Windows (volitelné)
Další informace najdete v tématu Konfigurace Integrovaného ověřování Windows.
Stínová kopie
Sestavení aplikace stínové kopie do ASP.NET základního modulu (ANCM) pro službu IIS můžou poskytovat lepší prostředí koncového uživatele než zastavení aplikace nasazením offline souboru aplikace.
Když ve Windows běží aplikace ASP.NET Core, binární soubory se uzamknou, aby je nebylo možné upravovat ani nahrazovat. Stínová kopie umožňuje aktualizaci sestavení aplikace, když je aplikace spuštěná, a to tak, že vytvoří kopii sestavení.
Stínová kopie není určená k povolení nasazení nulového výpadku, takže se očekává, že služba IIS aplikaci stále recykluje a některé požadavky můžou dostat odpověď na nedostupnou službu 503. Pro nasazení s nulovými výpadky doporučujeme použít vzor, jako jsou modrá-zelená nasazení nebo sloty nasazení Azure. Stínová kopie pomáhá minimalizovat výpadky nasazení, ale nemůže ji úplně eliminovat.
Stínová kopie je povolena přizpůsobením nastavení obslužné rutiny ANCM v web.config
:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<remove name="aspNetCore"/>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified"/>
</handlers>
<aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".logsstdout">
<handlerSettings>
<handlerSetting name="enableShadowCopy" value="true" />
<!-- Ensure that the IIS ApplicationPool identity has permission to this directory -->
<handlerSetting name="shadowCopyDirectory" value="../ShadowCopyDirectory/" />
</handlerSettings>
</aspNetCore>
</system.webServer>
</configuration>