Hostowanie poza procesem za pomocą usług IIS i ASP.NET Core
Uwaga
Nie jest to najnowsza wersja tego artykułu. Aby zapoznać się z bieżącą wersją, zapoznaj się z wersją tego artykułu platformy .NET 8.
Ostrzeżenie
Ta wersja ASP.NET Core nie jest już obsługiwana. Aby uzyskać więcej informacji, zobacz .NET i .NET Core Support Policy (Zasady obsługi platformy .NET Core). Aby zapoznać się z bieżącą wersją, zapoznaj się z wersją tego artykułu platformy .NET 8.
Ważne
Te informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany, zanim zostanie wydany komercyjnie. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Aby zapoznać się z bieżącą wersją, zapoznaj się z wersją tego artykułu platformy .NET 8.
Ponieważ aplikacje ASP.NET Core działają w procesie oddzielonym od procesu roboczego usług IIS, moduł ASP.NET Core Module obsługuje zarządzanie procesami. Moduł uruchamia proces na potrzeby aplikacji ASP.NET Core po odebraniu pierwszego żądania i ponownie uruchamia aplikację, jeśli zostanie ona zamknięta lub ulegnie awarii. Jest to zasadniczo takie samo działanie jak w przypadku aplikacji uruchamianych wewnątrz procesu, zarządzanych przez usługę aktywacji procesów systemu Windows (WAS).
Na poniższym diagramie przedstawiono relację między usługami IIS, modułem ASP.NET Core Module i aplikacją hostowaną poza procesem:
- Żądania z Internetu docierają do sterownika HTTP.sys trybu jądra.
- Sterownik kieruje żądania do usług IIS na skonfigurowanym porcie witryny internetowej. Skonfigurowany port to zwykle 80 (HTTP) lub 443 (HTTPS).
- Moduł przekazuje żądania do Kestrel na losowym porcie aplikacji. Losowy port nie jest portem 80 ani 443.
Moduł ASP.NET Core Module określa port za pośrednictwem zmiennej środowiskowej podczas uruchamiania. Rozszerzenie UseIISIntegration konfiguruje serwer do nasłuchiwania w systemie http://localhost:{PORT}
. Wykonywane są dodatkowe kontrole, a żądania, które nie pochodzą z modułu, są odrzucane. Moduł nie obsługuje przekazywania HTTPS. Żądania są przekazywane za pośrednictwem protokołu HTTP, nawet jeśli są odbierane przez usługi IIS za pośrednictwem protokołu HTTPS.
Po odebraniu przez Kestrel żądania z modułu żądanie to jest przekazywane do potoku oprogramowania pośredniczącego ASP.NET Core. Potok oprogramowania pośredniczącego obsługuje żądanie i przekazuje je jako wystąpienie obiektu HttpContext
do logiki aplikacji. Oprogramowanie pośredniczące dodane przez integrację z usługami IIS aktualizuje schemat, zdalny adres IP i bazę ścieżek, aby uwzględnić przekazanie żądania do serwera Kestrel. Odpowiedź aplikacji jest przekazywana z powrotem do usług IIS, które przekazują ją z powrotem do klienta HTTP, który zainicjował żądanie.
Aby uzyskać wskazówki dotyczące konfiguracji modułu ASP.NET Core Module, zobacz Moduł ASP.NET Core Module (ANCM) dla usług IIS.
Aby uzyskać więcej informacji na temat hostingu, zobacz Host w ASP.NET Core.
Konfiguracja aplikacji
Włączanie składników IISIntegration
Podczas tworzenia hosta w elemencie CreateHostBuilder
(Program.cs
) wywołaj polecenie CreateDefaultBuilder w celu włączenia integracji usług IIS:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
...
Aby uzyskać więcej informacji na temat programu CreateDefaultBuilder
, zobacz Host ogólny platformy .NET w ASP.NET Core.
Model hostingu poza procesem
Aby skonfigurować opcje usług IIS, dołącz konfigurację usługi dla IISOptions w ConfigureServices. Poniższy przykład uniemożliwia wypełnianie HttpContext.Connection.ClientCertificate
przez aplikację:
services.Configure<IISOptions>(options =>
{
options.ForwardClientCertificate = false;
});
Opcja | Wartość domyślna | Ustawienie |
---|---|---|
AutomaticAuthentication |
true |
Jeśli true , oprogramowanie pośredniczące integracji usług IIS ustawia HttpContext.User uwierzytelniony przez uwierzytelnianie systemu Windows. Jeśli false oprogramowanie pośredniczące zapewnia identity tylko element i HttpContext.User reaguje na wyzwania, gdy żądanie jest jawnie żądane przez program AuthenticationScheme . Uwierzytelnianie systemu Windows musi być włączone w usługach IIS, aby AutomaticAuthentication działała. Aby uzyskać więcej informacji, zobacz temat Uwierzytelnianie systemu Windows. |
AuthenticationDisplayName |
null |
Ustawia nazwę wyświetlaną pokazywaną użytkownikom na stronach logowania. |
ForwardClientCertificate |
true |
Jeśli true i nagłówek żądania MS-ASPNETCORE-CLIENTCERT są obecne, HttpContext.Connection.ClientCertificate zostanie wypełniony. |
Scenariusze dotyczące serwera proxy i modułu równoważenia obciążenia
Oprogramowanie pośredniczące integracji usług IIS i moduł ASP.NET Core Module są skonfigurowane do przekazywania:
- Schematu (HTTP/HTTPS).
- Zdalnego adresu IP, z którego pochodzi żądanie.
Oprogramowanie pośredniczące integracji usług IIS konfiguruje oprogramowanie pośredniczące nagłówków przekazywanych.
Dodatkowa konfiguracja może być wymagana w przypadku aplikacji hostowanych za dodatkowymi serwerami proxy i modułami równoważenia obciążenia. Aby uzyskać więcej informacji, zobacz Konfigurowanie platformy ASP.NET Core pod kątem pracy z serwerami proxy i modułami równoważenia obciążenia.
Model hostingu poza procesem
Aby skonfigurować aplikację na potrzeby hostingu poza procesem, ustaw wartość <AspNetCoreHostingModel>
właściwości na OutOfProcess
w pliku projektu (.csproj
):
<PropertyGroup>
<AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
</PropertyGroup>
Hostowanie procesów jest ustawiane na InProcess
wartość , która jest wartością domyślną.
Wartość <AspNetCoreHostingModel>
jest niewrażliwa na wielkość liter, więc inprocess
i outofprocess
są prawidłowymi wartościami.
Kestrel Serwer jest używany zamiast serwera HTTP usług IIS (IISHttpServer
).
W przypadku braku procesu CreateDefaultBuilder
wywołania UseIISIntegration :
- Skonfiguruj port i ścieżkę podstawową, na którym serwer powinien nasłuchiwać podczas uruchamiania za modułem ASP.NET Core.
- Skonfiguruj hosta do przechwytywania błędów uruchamiania.
Nazwa procesu
Process.GetCurrentProcess().ProcessName
raporty w3wp
/iisexpress
(proces) lub dotnet
(poza procesem).
Wiele modułów natywnych, takich jak uwierzytelnianie systemu Windows, pozostaje aktywnych. Aby dowiedzieć się więcej o modułach usług IIS aktywnych przy użyciu modułu podstawowego ASP.NET, zobacz Moduły usług IIS z ASP.NET Core.
Moduł ASP.NET Core może również wykonywać następujące czynności:
- Ustaw zmienne środowiskowe dla procesu roboczego.
- Rejestrowanie danych wyjściowych stdout w magazynie plików w celu rozwiązywania problemów z uruchamianiem.
- Przekazywanie tokenów uwierzytelniania systemu Windows.