Tento článek se zabývá recyklací webového poolu, což je důležitý koncept v kontextu ASP.NET Core aplikací hostovaných ve službě IIS. Vysvětlíme si, co to je, jak to funguje a jaké jsou s tím spojené konfigurace.
Modul ASP.NET Core (ANCM) je nativní modul SLUŽBY IIS, který se připojuje ke kanálu SLUŽBY IIS, což umožňuje ASP.NET core aplikacím pracovat se službou IIS. Modul ASP.NET Core (ANCM) se instaluje s modulem runtime .NET Core z hostitelské sady .NET Core.
Pokyny k instalaci modulu ASP.NET Core najdete v tématu Instalace sady hostingu .NET Core.
Existují dva hlavní modely hostování pro ASP.NET Core aplikace ve službě IIS:
Mezi jednotlivými modely hostování existují kompromisy. Sdílení fondu aplikací mezi aplikacemi se nepodporuje.
Čtěte také: Jak recyklovat starý šicí stroj
Pokud se v kořenovém adresáři aplikace zjistí soubor s názvem app_offline.htm, pokusí se ASP.NET Core Module aplikaci řádně vypnout a zastavit zpracování příchozích požadavků. V době, kdy app_offline.htm je soubor k dispozici, ASP.NET Core Module reaguje na požadavky odesláním obsahu app_offline.htm souboru. Chcete-li tuto stránku potlačit a vrátit se na výchozí stavovou stránku služby IIS 5xx, použijte disableStartUpErrorPage atribut.
Pokud používáte model hostování mimo proces, nemusí se aplikace okamžitě vypnout, pokud existuje otevřené připojení. Zjistí se odpojení klienta. V případě služby IIS Express modul nerecykluje pracovní proces, ale místo toho aktivuje řádné vypnutí aktuálního procesu SLUŽBY IIS Express. Mnoho nativních modulů, jako je ověřování systému Windows, zůstává aktivních.
Pro zamezení neočekávaných restartů NET Genia je potřeba vypnout takzvanou „recyklaci” aplikačních poolů (ukončení procesu w3wp.exe) na webovém serveru. Ve „Výchozím nastavení fondu aplikací” („Application Pool Defaults”) přejděte do sekce „Recyklace” („Recycling”) a nastavte „Pravidelný časový interval” („Regular Time Interval”) na hodnotu „0”.
Modul ASP.NET Core je konfigurovatelný pomocí elementu aspNetCore v souboru web.config. Zde jsou některé z nejdůležitějších atributů:
Proměnné prostředí lze zadat pro proces v atributu processPath. Zadejte proměnnou prostředí s <environmentVariable> podřízeným prvkem <environmentVariables> elementu kolekce. Následující příklad nastaví dvě proměnné prostředí v web.config. ASPNETCORE_ENVIRONMENT nakonfiguruje prostředí aplikace na Development. Vývojář může dočasně nastavit tuto hodnotu v web.config souboru, aby se při ladění výjimky aplikace načetla stránka výjimky vývojáře. Alternativou k nastavení prostředí přímo v web.config je zahrnutí <EnvironmentName> vlastnosti do profilu publikování (.pubxml) nebo souboru projektu.
Čtěte také: Zodpovědný přístup k recyklaci kávových kapslí
Modul ASP.NET Core přesměruje výstup konzoly stdout a stderr na disk, pokud stdoutLogEnabled jsou nastaveny atributy stdoutLogFile elementu aspNetCore. Všechny složky v cestě stdoutLogFile vytvoří modul při vytvoření souboru protokolu. Protokoly se nestřídají, pokud nedojde k recyklaci nebo restartování procesu. Nepoužívejte protokol stdout pro obecné účely protokolování aplikace. Pro rutinní protokolování v aplikaci ASP.NET Core použijte knihovnu protokolování, která omezuje velikost souboru protokolu a obměňuje protokoly.
Při vytváření souboru protokolu se automaticky přidají časové razítko a přípona souboru. Název souboru protokolu se skládá připojením časového razítka, ID procesu a přípony souboru (.log) k poslednímu stdoutLogFile segmentu cesty (obvykle stdout) odděleného podtržítky. Pokud cesta stdoutLogFile končí stdout, protokol aplikace s PID 1934 vytvořený 2. 5. Pokud stdoutLogEnabled je false, chyby, ke kterým dochází při spuštění aplikace, se zachytí a vygenerují do protokolu událostí až do 30 kB.
Při publikování aplikace pro nasazení služby Aplikace Azure Service nastaví stdoutLogFile webová sada SDK hodnotu na \\?\%home%\LogFiles\stdout.
Modul ASP.NET Core je konfigurovatelný tak, aby poskytoval rozšířené diagnostické protokoly. <handlerSettings> Přidejte prvek do elementu <aspNetCore> v souboru web.config. Všechny složky v cestě (logs v předchozím příkladu) vytvoří modul při vytvoření souboru protokolu.
ASPNETCORE_MODULE_DEBUG_FILE: Cesta k souboru protokolu ladění. Nezanechávejte protokolování ladění povolené v nasazení déle, než je nutné k řešení potíží. Velikost protokolu není omezená.
Čtěte také: Výzvy v recyklaci tvrzených plastů
Stack ochrany dat ASP.NET Core je využíván několika middlewary ASP.NET Core, včetně middlewaru používaného k ověřování. 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 nakonfigurována ochrana dat, aby se vytvořilo trvalé úložiště kryptografických klíčů. Veškerá data chráněná daným svazkem klíčů již není možné dešifrovat.
ASP.NET klíče ochrany základních dat používané aplikacemi ASP.NET Core jsou uložené v registru externím pro aplikace. 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íč v registru HKLM, který je přístupný pouze pro účet pracovního procesu v app pool aplikace.
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ě uložených klíčů. 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.
Toto nastavení najdete v části Upřesňující nastavení fondu aplikací v části Model zpracování. Nastavte možnost Načíst profil uživatele na hodnotu True. Pokud je nastavená hodnota True, klíče se uchovávají v adresáři profilu uživatele a jsou chráněné pomocí rozhraní Data Protection API a klíče specifického pro daný uživatelský účet. Atribut setProfileEnvironment fondů aplikací musí být také povolen. Výchozí hodnota atributu setProfileEnvironment je true. V některých scénářích (například v operačním systému Windows) je atribut setProfileEnvironment nastavený na hodnotu false.
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. Na každý počítač nasaďte certifikát X509. 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.
| Atribut | Popis |
|---|---|
| processPath | Cesta ke spustitelnému souboru. |
| arguments | Argumenty pro spustitelný soubor. |
| stdoutLogEnabled | Povolení protokolování stdout. |
| stdoutLogFile | Cesta k souboru protokolu stdout. |
| processesPerApplication | Počet instancí procesu na aplikaci. |
| requestTimeout | Časový limit požadavku. |
| startupTimeLimit | Časový limit spuštění. |
| rapidFailsPerMinute | Počet rychlých selhání za minutu. |
| forwardWindowsAuthToken | Předávání tokenu ověřování Windows. |
tags: #recyklace #weboveho #poolu #co #to #je