IIS ve ASP.NET Core ile işlem dışı barındırma

ASP.NET Core uygulamaları IIS çalışan işleminden ayrı bir işlemde çalıştırıldığından, işlem yönetimini ASP.NET Core Modülü gerçekleştirir. İlk istek geldiğinde modül ASP.NET Core uygulaması için işlemi başlatır ve uygulama kapanırsa veya kilitlenirse uygulamayı yeniden başlatır. Bu temelde, Windows İşlem Etkinleştirme Hizmeti (WAS) tarafından yönetilen, işlem içinde çalıştırılan uygulamalarda görünen davranışla aynıdır.

Aşağıdaki diyagramda IIS, ASP.NET Core Modülü ve işlem dışında barındırılan uygulama arasındaki ilişki gösterilir:

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

  1. Web'den çekirdek modundaki HTTP.sys sürücüsüne istekler gelir.
  2. Sürücü istekleri web sitesinin yapılandırılmış bağlantı noktası üzerinden IIS'ye yönlendirir. Yapılandırılmış bağlantı noktası genellikle 80 (HTTP) veya 443'tür (HTTPS).
  3. Modül istekleri uygulama için rastgele bir bağlantı noktası üzerinden Kestrel'e iletir. Rastgele bağlantı noktası 80 veya 443 değildir.

ASP.NET Core Modülü başlatma sırasında bir ortam değişkeni yoluyla bağlantı noktasını belirtir. UseIISIntegration uzantısı sunucuyu http://localhost:{PORT} üzerinden dinleyecek şekilde yapılandırır. Ek denetimler gerçekleştirilir ve modülden kaynaklanmayan istekler reddedilir. Modül HTTPS üzerinden iletmeyi desteklemez. IIS istekleri HTTPS üzerinden almış olsa bile istekler HTTP üzerinden iletilir.

Kestrel isteği modülden aldıktan sonra, istek ASP.NET Core ara yazılım işlem hattına iletilir. Ara yazılım işlem hattı isteği işler ve bir HttpContext örneği olarak uygulamanın mantığına geçirir. IIS Tümleştirmesi tarafından eklenen ara yazılım, isteği Kestrel'e iletme işlemini gerçekleştirmek için şemayı, uzak IP'yi ve yol tabanını güncelleştirir. Uygulamanın yanıtı IIS'ye geri geçirilir ve IIS de bunu geriye, isteği başlatan HTTP istemcisine geçirir.

ASP.NET Core Modülü yapılandırma rehberi için bkz. IIS için ASP.NET Core Modülü (ANCM).

Barındırma hakkında daha fazla bilgi için bkz. ASP.NET Core'da barındırma.

Uygulama yapılandırması

IISIntegration bileşenlerini etkinleştirme

CreateHostBuilder yönteminde bir konak oluştururken (Program.cs) IIS tümleştirmesini etkinleştirmek için CreateDefaultBuilder yöntemini çağırın:

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        ...

CreateDefaultBuilder hakkında daha fazla bilgi için bkz. ASP.NET Core'da .NET Genel Konağı.

İşlem dışı barındırma modeli

IIS seçeneklerini yapılandırmak için ConfigureServices yönteminde IISOptions için bir hizmet yapılandırması ekleyin. Aşağıdaki örnek uygulamanın HttpContext.Connection.ClientCertificate özelliğini doldurmasını engeller:

services.Configure<IISOptions>(options => 
{
    options.ForwardClientCertificate = false;
});
Seçenek Varsayılan Ayar
AutomaticAuthentication true true olduğunda, IIS Tümleştirme Ara YazılımıHttpContext.User özelliğini Windows Kimlik Doğrulaması tarafından kimliği doğrulanmış olarak ayarlar. false olduğunda, ara yazılım yalnızca HttpContext.User için bir kimlik sağlar ve AuthenticationScheme tarafından açıkça istendiğinde sınamaları yanıtlar. AutomaticAuthentication'ın çalışması için IIS'de Windows Kimlik Doğrulaması'nın etkinleştirilmesi gerekir. Daha fazla bilgi için Windows Kimlik Doğrulaması konusuna bakın.
AuthenticationDisplayName null Oturum açma sayfalarında kullanıcılara gösterilen görünen adı ayarlar.
ForwardClientCertificate true true olduğunda ve MS-ASPNETCORE-CLIENTCERT istek üst bilgisi de mevcut olduğunda HttpContext.Connection.ClientCertificate doldurulur.

Ara sunucu ve yük dengeleyici senaryoları

IIS Tümleştirme Ara Yazılımı ve ASP.NET Core Modülü şunları iletecek şekilde yapılandırılır:

  • Şema (HTTP/HTTPS).
  • İsteğin kaynaklandığı uzak IP adresi.

IIS Tümleştirme Ara Yazılımı, İletilen Üst Bilgiler Ara Yazılımını yapılandırır.

Ek ara sunucuların ve yük dengeleyicilerin arkasında barındırılan uygulamalar için ek yapılandırma gerekebilir. Daha fazla bilgi için bkz. ASP.NET Core'u ara sunucular ve yük dengeleyicilerle çalışacak şekilde yapılandırma.

İşlem dışı barındırma modeli

Bir uygulamayı işlem dışı barındırma için yapılandırmak için, özelliğin <AspNetCoreHostingModel>OutOfProcess değerini proje dosyasında (.csproj):

<PropertyGroup>
  <AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
</PropertyGroup>

İşlem içi barındırma, varsayılan değer olan ile InProcessayarlanır.

değeri <AspNetCoreHostingModel> büyük/küçük harfe duyarsız inprocessoutofprocess olduğundan geçerli değerlerdir.

Kestrel sunucusu IIS HTTP Sunucusu (IISHttpServer yerine) kullanılır.

İşlem dışı için şu CreateDefaultBuilder çağrılar UseIISIntegration yapılır:

  • ASP.NET Çekirdek Modülü arkasında çalışırken sunucunun dinlemesi gereken bağlantı noktasını ve temel yolu yapılandırın.
  • Başlangıç hatalarını yakalamak için konağı yapılandırın.

İşlem adı

Process.GetCurrentProcess().ProcessName raporlar w3wp/iisexpress (işlem içi) veya dotnet (işlem dışı).

Windows Kimlik Doğrulaması gibi birçok yerel modül etkin kalır. ASP.NET Çekirdek Modülü ile etkin IIS modülleri hakkında daha fazla bilgi edinmek için bkz . ASP.NET Core ile IIS modülleri.

ASP.NET Core Modülü şunları da yapabilir:

  • Çalışan işlemi için ortam değişkenlerini ayarlayın.
  • Başlatma sorunlarını gidermek için stdout çıkışını dosya depolamaya günlükleyin.
  • Windows kimlik doğrulama belirteçlerini iletme.