IIS ve ASP.NET Core ile işlem dışı barındırma
Uyarı
ASP.NET Core'un bu sürümü artık desteklenmiyor. Daha fazla bilgi için bkz . .NET ve .NET Core Destek İlkesi. Geçerli sürüm için bu makalenin .NET 8 sürümüne bakın.
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:
- Web'den çekirdek modundaki HTTP.sys sürücüsüne istekler gelir.
- 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).
- 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. isefalse , ara yazılım yalnızca için HttpContext.User bir identity sağlar ve tarafından açıkça istendiğinde zorluklara AuthenticationScheme yanıt verir. 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 InProcess
ayarlanır.
değeri <AspNetCoreHostingModel>
büyük/küçük harfe duyarsız inprocess
outofprocess
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.
ASP.NET Core