Hostování mimo proces se službou IIS a ASP.NET Core
Poznámka:
Toto není nejnovější verze tohoto článku. Aktuální verzi najdete ve verzi .NET 8 tohoto článku.
Upozorňující
Tato verze ASP.NET Core se už nepodporuje. Další informace najdete v tématu .NET a .NET Core Zásady podpory. Aktuální verzi najdete ve verzi .NET 8 tohoto článku.
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 ve verzi .NET 8 tohoto článku.
Vzhledem k tomu, že aplikace ASP.NET Core běží v procesu odděleném od pracovního procesu služby IIS, zajišťuje správu procesů modul ASP.NET Core. Modul zahájí tento proces pro aplikaci ASP.NET Core při přijetí prvního požadavku a v případě vypnutí nebo selhání aplikaci restartuje. Jedná se v podstatě o stejné chování jako u aplikací, které běží vnitroprocesově a jsou spravované Aktivační službou procesů systému Windows (WAS).
Následující diagram znázorňuje vztah mezi službou IIS, modulem ASP.NET Core a mimoprocesově hostovanou aplikací:
- Požadavky přijdou z webu do ovladače HTTP.sys v režimu jádra.
- Ovladač přesměruje požadavky do služby IIS na nakonfigurovaném portu webu. Nakonfigurovaný port je obvykle 80 (HTTP) nebo 443 (HTTPS).
- Modul předá požadavky na server Kestrel na náhodném portu dané aplikace. Náhodný port není 80 ani 443.
Modul ASP.NET Core tento port určí při spuštění prostřednictvím proměnné prostředí. Rozšíření UseIISIntegration nakonfiguruje server tak, aby naslouchal na adrese http://localhost:{PORT}
. Provedou se další kontroly a požadavky, které nepocházejí z tohoto modulu, se zamítnou. Modul nepodporuje předávání HTTPS. Požadavky se předávají přes HTTP, i když je služba IIS přijme přes HTTPS.
Jakmile server Kestrel přijme požadavek z modulu, požadavek se přesměruje do kanálu middlewaru ASP.NET Core. Kanál middlewaru požadavek zpracuje a předá ho jako instanci HttpContext
do logiky aplikace. Middleware přidaný integrací služby IIS aktualizuje schéma, vzdálenou IP adresu a základ cesty k účtu pro přesměrování požadavku na server Kestrel. Odpověď aplikace se předá zpět do služby IIS, která ji předá klientovi HTTP, který požadavek inicioval.
Doprovodné materiály ke konfiguraci modulu ASP.NET Core najdete v tématu Modul ASP.NET Core (ANCM) pro službu IIS.
Další informace o hostování najdete v části Hostitel v ASP.NET Core.
Konfigurace aplikací
Povolení komponent IISIntegration
Pokud chcete povolit integraci služby IIS, při sestavování hostitele v metodě CreateHostBuilder
(Program.cs
) zavolejte metodu CreateDefaultBuilder:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
...
Další informace najdete o metodě CreateDefaultBuilder
najdete v tématu Obecný hostitel .NET v ASP.NET Core.
Model mimoprocesového hostování
Pokud chcete nakonfigurovat možnosti služby IIS, vložte konfiguraci služby pro třídu IISOptions do souboru ConfigureServices. Následující příklad zabrání aplikaci vyplnit hodnotu HttpContext.Connection.ClientCertificate
:
services.Configure<IISOptions>(options =>
{
options.ForwardClientCertificate = false;
});
Možnost | Výchozí | Nastavení |
---|---|---|
AutomaticAuthentication |
true |
Pokud je nastavená hodnota true , middleware IIS Integration nastaví objekt HttpContext.User , který se ověřuje pomocí Integrovaného ověřování Windows. Pokud false middleware poskytuje identity pouze výzvu HttpContext.User a reaguje na výzvy, pokud je AuthenticationScheme výslovně požaduje . Aby fungovala možnost AutomaticAuthentication , ve službě IIS musí být povolené Integrované ověřování Windows. Další informace najdete v tématu Integrované ověřování Windows. |
AuthenticationDisplayName |
null |
Nastaví zobrazovaný název, který se zobrazí uživatelům na přihlašovacích stránkách. |
ForwardClientCertificate |
true |
Pokud je nastavená hodnota true a je k dispozici hlavička požadavku MS-ASPNETCORE-CLIENTCERT , vyplní se hodnota HttpContext.Connection.ClientCertificate . |
Scénáře týkající se proxy serveru a nástroje pro vyrovnávání zatížení
Middleware IIS Integration a modul ASP.NET Core jsou nakonfigurované tak, aby předávaly:
- Schéma (HTTP/HTTPS)
- Vzdálenou IP adresu, ze které požadavek pochází
Middleware IIS Integration konfiguruje middleware Forwarded Headers.
Aplikace hostované za dalšími proxy servery a nástroji pro vyrovnávání zatížení můžou vyžadovat další konfiguraci. Další informace najdete v tématu Konfigurace ASP.NET Core pro práci s proxy servery a nástroji pro vyrovnávání zatížení.
Model mimoprocesového hostování
Pokud chcete nakonfigurovat aplikaci pro hostování mimo proces, nastavte hodnotu <AspNetCoreHostingModel>
vlastnosti v OutOfProcess
souboru projektu (.csproj
):
<PropertyGroup>
<AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
</PropertyGroup>
Hostování v procesu je nastaveno na InProcess
výchozí hodnotu.
Hodnota <AspNetCoreHostingModel>
nerozlišuje malá a velká písmena, takže inprocess
jsou outofprocess
platné hodnoty.
Kestrel server se používá místo serveru HTTP služby IIS (IISHttpServer
).
V případě mimoprocesu CreateDefaultBuilder
volání UseIISIntegration na:
- Nakonfigurujte port a základní cestu, na které by měl server naslouchat při spuštění za modulem ASP.NET Core.
- Nakonfigurujte hostitele tak, aby zachytil chyby při spuštění.
Název procesu
Process.GetCurrentProcess().ProcessName
sestav w3wp
/iisexpress
(v procesu) nebo dotnet
(mimo proces).
Mnoho nativních modulů, jako je ověřování systému Windows, zůstává aktivních. Další informace o modulech SLUŽBY IIS, které jsou aktivní s modulem ASP.NET Core, najdete v tématu Moduly IIS s ASP.NET Core.
Základní modul ASP.NET může také:
- Nastavte proměnné prostředí pro pracovní proces.
- Výstup protokolu stdout do úložiště souborů pro řešení potíží se spuštěním
- Předávat ověřovací tokeny Systému Windows