Hostování mimo proces se službou IIS a ASP.NET Core

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

ASP.NET Core Module in the out-of-process hosting scenario

  1. Požadavky přijdou z webu do ovladače HTTP.sys v režimu jádra.
  2. Ovladač přesměruje požadavky do služby IIS na nakonfigurovaném portu webu. Nakonfigurovaný port je obvykle 80 (HTTP) nebo 443 (HTTPS).
  3. 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 je nastavená hodnota false, middleware pro objekt HttpContext.User pouze poskytne identitu a bude reagovat na explicitní požadavky třídy AuthenticationScheme. 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 InProcessvý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