ASP.NET Çekirdek Modülü ve IIS'nin gelişmiş yapılandırması
Bu makale, ASP.NET Çekirdek Modülü ve IIS için gelişmiş yapılandırma seçeneklerini ve senaryolarını kapsar.
Yığın boyutunu değiştirme
Yalnızca işlem içi barındırma modeli kullanılırken geçerlidir.
Dosyadaki bayt web.config
cinsinden ayarı kullanarak stackSize
yönetilen yığın boyutunu yapılandırın. Varsayılan boyut 1.048.576 bayttır (1 MB). Aşağıdaki örnek yığın boyutunu 2 MB (2.097.152 bayt) olarak değiştirir:
<aspNetCore processPath="dotnet"
arguments=".\MyApp.dll"
stdoutLogEnabled="false"
stdoutLogFile="\\?\%home%\LogFiles\stdout"
hostingModel="inprocess">
<handlerSettings>
<handlerSetting name="stackSize" value="2097152" />
</handlerSettings>
</aspNetCore>
Yapılandırmada döndürmeye izin verme
Bu disallowRotationOnConfigChange
ayar, genel yapılandırmada yapılan bir değişikliğin tüm sitelerin geri dönüştürülmesine neden olmaması gereken mavi/yeşil senaryolara yöneliktir. Bu bayrak doğru olduğunda, yalnızca sitenin kendisiyle ilgili değişiklikler geri dönüşüme neden olur. Örneğin, web.config'i değişirse veya IIS'nin perspektifinden sitenin yoluyla ilgili bir şey değişirse site geri dönüşüme dönüşür. Ancak applicationHost.config dosyasında yapılan genel bir değişiklik, bir uygulamanın geri dönüştürülmesine neden olmaz. Aşağıdaki örnek bu ayarı true olarak ayarlar:
<aspNetCore processPath="dotnet"
arguments=".\MyApp.dll"
stdoutLogEnabled="false"
stdoutLogFile="\\?\%home%\LogFiles\stdout"
hostingModel="inprocess">
<handlerSettings>
<handlerSetting name="disallowRotationOnConfigChange" value="true" />
</handlerSettings>
</aspNetCore>
Bu ayar API'ye karşılık gelir ApplicationPoolRecycling.DisallowRotationOnConfigChange
Ara sunucu yapılandırması HTTP protokol ve eşleştirme belirteci kullanır
Yalnızca işlem dışı barındırma için geçerlidir.
ASP.NET Çekirdek Modülü arasında oluşturulan ve Kestrel HTTP protokolünü kullanan ara sunucu. Modül Kestrel ile sunucunun dışında bir konumdan gelen trafiği dinleme riski yoktur.
bir eşleştirme belirteci, tarafından Kestrel alınan isteklerin IIS tarafından proksied olduğunu ve başka bir kaynaktan gelmediğini garanti etmek için kullanılır. Eşleştirme belirteci oluşturulur ve modül tarafından bir ortam değişkenine (ASPNETCORE_TOKEN
) ayarlanır. Eşleştirme belirteci de her prxied isteğinde bir üst bilgi (MS-ASPNETCORE-TOKEN
) olarak ayarlanır. IIS Ara Yazılımı, aldığı her isteği denetlediğinden, eşleştirme belirteci üst bilgisi değerinin ortam değişkeni değeriyle eşleşdiğini onaylar. Belirteç değerleri eşleşmezse istek günlüğe kaydedilir ve reddedilir. Eşleştirme belirteci ortam değişkeni ve modül Kestrel arasındaki trafiğe sunucunun kapalı bir konumundan erişilemez. Eşleştirme belirteci değerini bilmeden, bir saldırgan IIS Ara Yazılımı'nda denetimi atlayan istekler gönderemez.
IIS Paylaşılan Yapılandırması ile ASP.NET Çekirdek Modülü
ASP.NET Çekirdek Modülü yükleyicisi TrustedInstaller
hesabın ayrıcalıklarıyla çalışır. Yerel sistem hesabının IIS Paylaşılan Yapılandırması tarafından kullanılan paylaşım yolu için değiştirme izni olmadığından, paylaşımdaki dosyada applicationHost.config
modül ayarlarını yapılandırmaya çalışırken yükleyici erişim reddedildi hatası oluşturur.
IIS yüklemesiyle aynı makinede IIS Paylaşılan Yapılandırması kullanırken, parametresi olarak ayarlanmış 1
ASP.NET Core Barındırma Paketi yükleyicisini OPT_NO_SHARED_CONFIG_CHECK
çalıştırın:
dotnet-hosting-{VERSION}.exe OPT_NO_SHARED_CONFIG_CHECK=1
Paylaşılan yapılandırmanın yolu IIS yüklemesi ile aynı makinede değilse şu adımları izleyin:
- IIS Paylaşılan Yapılandırmasını devre dışı bırakın.
- Yükleyiciyi çalıştırın.
- Güncelleştirilmiş
applicationHost.config
dosyayı dosya paylaşımına aktarın. - IIS Paylaşılan Yapılandırmasını yeniden etkinleştirin.
Veri koruması
ASP.NET Core Veri Koruma yığını, kimlik doğrulamasında kullanılan ara yazılım da dahil olmak üzere çeşitli ASP.NET Core ara yazılımlarında kullanılır. Veri Koruma API'leri kullanıcı kodu tarafından çağrılmıyor olsa bile, kalıcı bir şifreleme anahtar deposu oluşturmak için dağıtım betiğiyle veya kullanıcı kodu içinde yapılandırılmalıdır. Veri koruması yapılandırılmazsa anahtarlar bellekte tutulur ve uygulama yeniden başlatıldığında atılır.
Uygulama yeniden başlatıldığında Data Protection anahtar halkası bellekte depolanıyorsa:
- Tüm cookie tabanlı kimlik doğrulama belirteçleri geçersiz kılınır.
- Kullanıcıların, sonraki isteklerinde yeniden oturum açmaları gerekir.
- Artık anahtarlıkla korunan verilerin şifresi çözülemez. CSRF belirteçleri ve ASP.NET Core MVC TempData tanımlama bilgileri de bunlara dahil olabilir.
IIS altında veri korumasını anahtarlığın kalıcı olmasını sağlayacak şekilde yapılandırmak için aşağıdaki yaklaşımlardan birini kullanın:
Data Protection Kayıt Defteri anahtarları oluşturma
ASP.NET Core uygulamaları tarafından kullanılan Veri Koruma anahtarları, uygulamaların dışındaki kayıt defterinde depolanır. Belirli bir uygulamanın anahtarlarını kalıcı hale getirmek için uygulama havuzu için Kayıt defteri anahtarları oluşturun.
Tek başına, webfarm olmayan IIS yüklemeleri için, ASP.NET Core uygulamasıyla kullanılan her uygulama havuzunda Data Protection Provision-AutoGenKeys.ps1 PowerShell betiği kullanılabilir. Bu betik, HKLM kayıt defterinde yalnızca uygulamanın uygulama havuzunun çalışan işlem hesabı tarafından erişilebilen bir Kayıt Defteri anahtarı oluşturur. Anahtarlar, makine genelindeki bir anahtarla DPAPI kullanılarak şifrelenir.
Web grubu senaryolarında bir uygulama, Veri Koruma anahtar halkasını depolamak için UNC yolu kullanacak şekilde yapılandırılabilir. Varsayılan olarak, anahtarlar şifrelenmez. Ağ paylaşımı için dosya izinlerinin, uygulamanın altında çalıştığı Windows hesabıyla sınırlı olduğundan emin olun. Bekleyen anahtarları korumak için X509 sertifikası kullanılabilir. Kullanıcıların sertifikaları karşıya yüklemesine izin veren bir mekanizma düşünün. Sertifikaları kullanıcının güvenilen sertifika deposuna yerleştirin ve kullanıcının uygulamasının çalıştığı tüm makinelerde kullanılabilir olduklarından emin olun. Daha fazla bilgi için bkz . ASP.NET Çekirdek Veri Korumasını Yapılandırma.
IIS Uygulama Havuzu'nu kullanıcı profilini yükleyecek şekilde yapılandırma
Bu ayar uygulama havuzu için Gelişmiş Ayarlar'ın altında yer alan İşlem Modeli bölümündedir. Kullanıcı Profilini Yükle seçeneğini
True
olarak ayarlayın.True
olarak ayarlandığında anahtarlar kullanıcı profili dizininde depolanır ve kullanıcı hesabına özgü bir anahtarla DPAPI kullanılarak korunur. Anahtarlar klasörde kalıcıdır%LOCALAPPDATA%/ASP.NET/DataProtection-Keys
.Uygulama havuzunun
setProfileEnvironment
özniteliği de etkinleştirilmelidir.setProfileEnvironment
için varsayılan değertrue
değeridir. Bazı senaryolarda (örneğin Windows işletim sistemi)setProfileEnvironment
false
olarak ayarlanır. Anahtarlar beklendiği gibi kullanıcı profili dizininde depolanmıyorsa:%windir%/system32/inetsrv/config
klasörüne gidin.applicationHost.config
dosyasını açın.<system.applicationHost><applicationPools><applicationPoolDefaults><processModel>
öğesini bulun.- Varsayılan değeri
true
olansetProfileEnvironment
özniteliğinin mevcut olmadığını veya özniteliğin açıkçatrue
değerine ayarlanmadığını onaylayın.
Dosya sistemini anahtarlık deposu olarak kullanma
Uygulama kodunu, dosya sistemini anahtarlık deposu olarak kullanacak şekilde ayarlayın. Anahtarlığı korumak için X509 sertifikası kullanın ve sertifikanın güvenilen bir sertifika olduğundan emin olun. Sertifika otomatik olarak imzalandıysa sertifikayı Güvenilen Kök deposuna yerleştirin.
Web grubunda IIS kullanırken:
- Tüm makinelerin erişebildiği bir dosya paylaşımı kullanın.
- Her makineye bir X509 sertifikası dağıtın. Kodda Veri Koruma'nın yapılandırılması.
Veri Koruması için makine genelinde ilke ayarlama
Data Protection sistemi, Data Protection API'lerini kullanan tüm uygulamalar için varsayılan makine genelinde ilke ayarlama desteği sınırlıdır. Daha fazla bilgi için bkz. ASP.NET Core Veri Koruması'na Genel Bakış.
IIS yapılandırması
Windows Server İşletim Sistemleri
Web Sunucusu (IIS) sunucu rolünü etkinleştirin ve rol hizmetlerini oluşturun.
Yönet menüsünden Rol ve Özellik Ekle sihirbazını veya Sunucu Yöneticisi'ndeki bağlantıyı kullanın. Sunucu Rolleri adımında Web Sunucusu (IIS) kutusunu işaretleyin.
Özellikler adımından sonra Web Sunucusu (IIS) için Rol hizmetleri adımı yüklenir. İstenen IIS rol hizmetlerini seçin veya sağlanan varsayılan rol hizmetlerini kabul edin.
Windows Kimlik Doğrulaması (İsteğe Bağlı)
Windows Kimlik Doğrulaması'nı etkinleştirmek için şu düğümleri genişletin: Web Sunucusu>Güvenlik. Windows Kimlik Doğrulaması özelliğini seçin. Daha fazla bilgi için bkz. Windows Kimlik Doğrulaması<windowsAuthentication>
ve Windows kimlik doğrulamasını yapılandırma.WebSockets (İsteğe Bağlı)
WebSockets, ASP.NET Core 1.1 veya üzerinde desteklenir. WebSockets'i etkinleştirmek için şu düğümleri genişletin: Web Sunucusu>Uygulama Geliştirme. WebSocket Protokolü özelliğini seçin. Daha fazla bilgi için bkz. WebSockets.Web sunucusu rolünü ve hizmetlerini yüklemek için Onay adımıyla devam edin. Web Sunucusu (IIS) rolü yüklendikten sonra sunucunun/IIS'nin yeniden başlatılması gerekmez.
Windows masaüstü işletim sistemleri
IIS Yönetim Konsolu'nu ve World Wide Web Hizmetleri'ni etkinleştirin.
Denetim Masası>Programlar>Programlar ve Özellikler> gidinWindows özelliklerini aç veya kapat seçeneğine gidin (ekranın sol tarafında).
Internet Information Services düğümünü açın. Web Yönetimi Araçları düğümünü açın.
IIS Yönetim Konsolu kutusunu işaretleyin.
World Wide Web Hizmetleri kutusunu işaretleyin.
World Wide Web Hizmetleri için varsayılan özellikleri seçin veya IIS özelliklerini özelleştirin.
Windows Kimlik Doğrulaması (İsteğe Bağlı)
Windows Kimlik Doğrulaması'nı etkinleştirmek için şu düğümleri genişletin: World Wide Web Hizmetleri>Güvenlik. Windows Kimlik Doğrulaması özelliğini seçin. Daha fazla bilgi için bkz. Windows Kimlik Doğrulaması<windowsAuthentication>
ve Windows kimlik doğrulamasını yapılandırma.WebSockets (İsteğe Bağlı)
WebSockets, ASP.NET Core 1.1 veya üzerinde desteklenir. WebSockets'i etkinleştirmek için şu düğümleri genişletin: World Wide Web Hizmetleri>Uygulama Geliştirme Özellikleri. WebSocket Protokolü özelliğini seçin. Daha fazla bilgi için bkz. WebSockets.IIS yüklemesi bir yeniden başlatma gerektiriyorsa sistemi yeniden başlatın.
Sanal Dizinler
ASP.NET Core uygulamalarıyla IIS Sanal Dizinleri desteklenmez. Uygulama bir alt uygulama olarak barındırılabilir.
Alt uygulamalar
ASP.NET Core uygulaması bir IIS alt uygulaması (alt uygulama) olarak barındırılabilir. Alt uygulamanın yolu kök uygulama URL'sinin bir parçası olur.
Alt uygulama içindeki statik varlık bağlantıları MVC ve Razor Sayfalar'da tilde-slash (~/
) gösterimi kullanmalıdır. Tilde-eğik çizgi gösterimi, alt uygulamanın yol tabanını işlenen göreli bağlantının önüne eklemek için bir Etiket Yardımcısını tetikler. /subapp_path
yolundaki bir alt uygulama için, src="~/image.png"
ile bağlantılı bir resim src="/subapp_path/image.png"
olarak işlenir. Kök uygulamanın Statik Dosya Ara Yazılımı statik dosya isteğini işlemez. İstek alt uygulamanın Statik Dosya Ara Yazılımı tarafından işlenir.
Dekont
Razor bileşenleri (.razor
) tilde-slash gösterimini kullanmamalıdır. Daha fazla bilgi için uygulama temel yolu belgelerine Blazor bakın.
Statik varlığın src
özniteliği bir mutlak yola ayarlanırsa (örneğinsrc="/image.png"
), bağlantı alt uygulamanın yol tabanı olmadan işlenir. Kök uygulamanın Statik Dosya Ara Yazılımı kök uygulamanın web kökünden varlığa hizmet vermeyi dener ve statik varlık kök uygulamadan kullanıma sunulmadığı sürece bu deneme 404 - Bulunmadı yanıtıyla sonuçlanır.
ASP.NET Core uygulamasını bir alt uygulama olarak ASP.NET Core uygulamasının altında barındırmak için:
Alt uygulama için bir uygulama havuzu oluşturun. Uygulamayı çalışan işleminde barındırmak için masaüstü CLR (.NET CLR) değil Core Ortak Dil Çalışma Zamanı Modülü (CoreCLR) önyüklendiğinden, .NET CLR Sürümü'nü Yönetilen Kod Yok olarak ayarlayın.
Alt uygulama kök sitenin altındaki bir klasörde yer alırken kök siteyi IIS Yöneticisi'ne ekleyin.
IIS Yöneticisi'nde alt uygulama klasörüne sağ tıklayın ve Uygulamaya Dönüştür'ü seçin.
Uygulama Ekle iletişim kutusunda Uygulama Havuzu için Seç düğmesini kullanarak alt uygulama için oluşturduğunuz uygulama havuzunu atayın. Tamam seçeneğini işaretleyin.
İşlem içi barındırma modelini kullanırken, alt uygulamaya ayrı uygulama havuzu ataması bir gereksinimdir.
İşlem içi barındırma modeli ve ASP.NET Core Modülü'nü yapılandırma hakkında daha fazla bilgi için bkz. IIS için ASP.NET Core Modülü (ANCM).
Uygulama Havuzları
Uygulama havuzu yalıtımı barındırma modeli tarafından belirlenir:
- İşlem içi barındırma: Uygulamaların ayrı uygulama havuzlarında çalıştırılması gerekir.
- İşlem dışı barındırma: Her uygulamayı kendi uygulama havuzunda çalıştırarak uygulamaları birbirinden yalıtmanızı öneririz.
IIS Web Sitesi Ekle iletişim kutusu varsayılan olarak uygulama başına tek bir uygulama havuzu ayarlar. Site adı sağlandığında, bu metin otomatik olarak Uygulama havuzu metin kutusuna aktarılır. Site eklendiğinde site adı kullanılarak yeni bir uygulama havuzu oluşturulur.
Uygulama Havuzu Identity
Uygulama havuzu kimlik hesabı, etki alanlarını veya yerel hesapları oluşturmak ve yönetmek zorunda kalmadan uygulamanın benzersiz bir hesap altında çalıştırılmasına olanak tanır. IIS 8.0 veya üzerinde, IIS Yönetici Çalışan İşlemi (WAS) yeni uygulama havuzunun adıyla sanal bir hesap oluşturur ve uygulama havuzunun çalışan işlemlerini varsayılan olarak bu hesap altında çalıştırılır. Uygulama havuzu için Gelişmiş Ayarlar altındaki IIS Yönetim Konsolu'nda öğesinin kullanacak ApplicationPoolIdentity
şekilde ayarlandığından Identity emin olun:
IIS yönetim işlemi Windows Güvenlik Sistemi'nde uygulama havuzunun adıyla güvenli bir tanımlayıcı oluşturur. Bu kimlik kullanılarak kaynakların güvenliği sağlanabilir. Öte yandan bu kimlik gerçek bir kullanıcı hesabı değildir ve Windows Kullanıcı Yönetim Konsolu'nda gösterilmez.
IIS çalışan işlemine uygulama üzerinde yükseltilmiş erişim gerekiyorsa, uygulamayı içeren dizin için Erişim Denetim Listesi'ni (ACL) değiştirin:
Windows Gezgini'ni açın ve dizine gidin.
Dizine sağ tıklayın ve Özellikler'i seçin.
Güvenlik sekmesinin altında Düzenle düğmesini ve sonra da Ekle düğmesini seçin.
Konumlar düğmesini seçin ve sistemin seçildiğinden emin olun.
IIS AppPool\{APP POOL NAME}
Yer tutucunun{APP POOL NAME}
uygulama havuzu adı olduğu biçimi girin. Seçecek nesne adlarını girin alanına. Adları Denetle düğmesini seçin. DefaultAppPool içinIIS AppPool\DefaultAppPool
kullanarak adları denetleyin. Adları Denetle düğmesi seçildiğinde nesne adları alanındaDefaultAppPool
değeri gösterilir. Uygulama havuzu adını doğrudan nesne adları alanına girmek mümkün değildir. Nesne adını denetlerkenIIS AppPool\{APP POOL NAME}
biçimini kullanın; burada{APP POOL NAME}
yer tutucusu uygulama havuzu adıdır.Tamam seçeneğini işaretleyin.
Okuma ve yürütme izinleri varsayılan olarak verilmelidir. Gerekirse ek izinler sağlayın.
Komut isteminde ICACLS aracı kullanılarak da erişim verilebilir. Örnek olarak DefaultAppPool kullanıldığında, klasör, alt klasörler ve dosyalar için okuma ve yürütme izinleri vermek için MyWebApp
aşağıdaki komut kullanılır:
ICACLS C:\sites\MyWebApp /grant "IIS AppPool\DefaultAppPool:(OI)(CI)RX"
Daha fazla bilgi için icacls konusuna bakın.
HTTP/2 desteği
Aşağıdaki IIS dağıtım senaryolarında ASP.NET Core ile birlikte HTTP/2 desteklenir:
- İşlemde
- Windows Server 2016/Windows 10 veya üzeri; IIS 10 veya üzeri
- TLS 1.2 veya üzeri bağlantısı
- İşlem dışı
- Windows Server 2016/Windows 10 veya üzeri; IIS 10 veya üzeri
- Genel kullanıma yönelik uç sunucu bağlantıları HTTP/2 kullanır ama Kestrel sunucusuna ters ara sunucu bağlantısı HTTP/1.1 kullanır.
- TLS 1.2 veya üzeri bağlantısı
HTTP/2 bağlantısı kurulduğunda işlem içi dağıtım için HttpRequest.Protocol
HTTP/2
bildirir. HTTP/2 bağlantısı kurulduğunda işlem dışı dağıtım için HttpRequest.Protocol
HTTP/1.1
bildirir.
İşlem içi ve işlem dışı barındırma modelleri hakkında daha fazla bilgi için bkz. IIS için ASP.NET Core Modülü (ANCM).
HTTP/2 varsayılan olarak etkinleştirilir. HTTP/2 bağlantısı kurulamazsa bağlantılar HTTP/1.1'e geri döner. IIS dağıtımlarıyla HTTP/2 yapılandırması hakkında daha fazla bilgi için bkz. IIS üzerinde HTTP/2.
CORS denetim öncesi istekleri
Bu bölüm yalnızca .NET Framework'ü hedefleyen ASP.NET Core uygulamalarına yöneliktir.
.NET Framework'ü hedefleyen ASP.NET Core uygulaması için, IIS'de OPTIONS istekleri varsayılan olarak uygulamaya geçirilmez. OPTIONS isteklerini göndermek üzere web.config
dosyasında uygulamanın IIS işleyicilerini yapılandırmayı öğrenmek için bkz. ASP.NET Web API 2'de kaynaklar arası istekleri etkinleştirme: CORS Nasıl Çalışır?
Uygulama Başlatma Modülü ve Boşta Kalma Zaman Aşımı
ASP.NET Core Modülü sürüm 2 tarafından IIS'de barındırıldığında:
- Uygulama Başlatma Modülü: İşlem içi veya işlem dışı barındırılan uygulamalar, çalışan işlemi yeniden başlatması veya sunucu yeniden başlatması sırasında otomatik olarak başlatılacak şekilde yapılandırılabilir.
- Boşta Kalma Zaman Aşımı: Uygulamada barındırılan işlem içi uygulamalar, işlem yapılmayan süreler boyunca zaman aşımına uğramamak üzere yapılandırılabilir.
Uygulama Başlatma Modülü
İşlem içi ve işlem dışı barındırılan uygulamalar için geçerlidir.
IIS Uygulama Başlatma, uygulama havuzu başlatıldığında veya geri dönüştürüldüğünde uygulamaya HTTP isteği gönderen bir IIS özelliğidir. İstek, uygulamanın başlatılmasını tetikler. Varsayılan olarak, IIS uygulamayı başlatmak için uygulamanın kök URL'sine (/
) bir istek gönderir (yapılandırmayla ilgili diğer ayrıntılar için bkz. Ek kaynaklar).
IIS Uygulama Başlatma rolü özelliğinin etkinleştirildiğini onaylayın:
Windows 7 veya üzeri masaüstü sistemlerinde IIS'yi yerel olarak kullanırken:
- Denetim Masası>Programlar>Programlar ve Özellikler> gidinWindows özelliklerini aç veya kapat seçeneğine gidin (ekranın sol tarafında).
- Internet Information Services>World Wide Web Hizmetleri>Uygulama Geliştirme Özellikleri'ni açın.
- Uygulama Başlatma onay kutusunu seçin.
Windows Server 2008 R2 veya üzerinde:
- Rol ve Özellik Ekleme Sihirbazı'nı açın.
- Rol hizmetlerini seçin panelinde Uygulama Geliştirme düğümünü açın.
- Uygulama Başlatma onay kutusunu seçin.
Sitede Uygulama Başlatma Modülü'nü etkinleştirmek için aşağıdaki yaklaşımlardan birini kullanın:
IIS Yöneticisi'ni kullanma:
- Bağlantılar panelinde Uygulama Havuzları'nı seçin.
- Listede uygulamanın uygulama havuzuna sağ tıklayın ve Gelişmiş Ayarlar'ı seçin.
- Varsayılan Başlangıç Modu şeklindedir
OnDemand
. Başlangıç Modu'nu olarakAlwaysRunning
ayarlayın. Tamam seçeneğini işaretleyin. - Bağlantılar panelinde Siteler düğümünü açın.
- Uygulamaya sağ tıklayın ve Web Sitesini Yönet>Gelişmiş Ayarlar'ı seçin.
- Varsayılan Ön Yükleme Etkin ayarıdır
False
. Ön Yükleme Etkin olarakTrue
ayarlayın. Tamam seçeneğini işaretleyin.
kullanarak
web.config
, öğesini uygulamanınweb.config
dosyasındaki<system.webServer>
öğelere settrue
iledoAppInitAfterRestart
ekleyin<applicationInitialization>
:<?xml version="1.0" encoding="utf-8"?> <configuration> <location path="." inheritInChildApplications="false"> <system.webServer> <applicationInitialization doAppInitAfterRestart="true" /> </system.webServer> </location> </configuration>
Boşta Kalma Süresi Zaman Aşımı
Yalnızca işlem içinde barındırılan uygulamalar için geçerlidir.
Uygulamanın boşta kalmasını önlemek için IIS Yöneticisi'ni kullanarak uygulama havuzunun boşta kalma zaman aşımı değerini ayarlayın:
- Bağlantılar panelinde Uygulama Havuzları'nı seçin.
- Listede uygulamanın uygulama havuzuna sağ tıklayın ve Gelişmiş Ayarlar'ı seçin.
- Varsayılan Boşta Kalma Zaman Aşımı (dakika) dakikadır
20
. Boşta Kalma Zaman Aşımı (dakika) değerini0
(sıfır) olarak ayarlayın. Tamam seçeneğini işaretleyin. - Çalışan işlemini geri dönüştürün.
İşlem dışında barındırılan uygulamaların zaman aşımına uğramasını önlemek için aşağıdaki yaklaşımlardan birini kullanın:
- Uygulamayı çalışır durumda tutmak için bir dış hizmetten uygulamaya ping gönderin.
- Uygulama yalnızca arka plan hizmetlerini barındırıyorsa IIS barındırmasından kaçının ve ASP.NET Core uygulamasını barındırmak için bir Windows Hizmeti kullanın.
Uygulama Başlatma Modülü ve Boşta Kalma Zaman Aşımı ek kaynakları
- IIS 8.0 Uygulama Başlatma
- Uygulama Başlatma
<applicationInitialization>
. - Uygulama Havuzu
<processModel>
için İşlem Modeli Ayarlar.
Modül, şema ve yapılandırma dosyası konumları
Modül
IIS (x86/amd64):
%windir%\System32\inetsrv\aspnetcore.dll
%windir%\SysWOW64\inetsrv\aspnetcore.dll
%ProgramFiles%\IIS\Asp.Net Core Module\V2\aspnetcorev2.dll
%ProgramFiles(x86)%\IIS\Asp.Net Core Module\V2\aspnetcorev2.dll
IIS Express (x86/amd64):
%ProgramFiles%\IIS Express\aspnetcore.dll
%ProgramFiles(x86)%\IIS Express\aspnetcore.dll
%ProgramFiles%\IIS Express\Asp.Net Core Module\V2\aspnetcorev2.dll
%ProgramFiles(x86)%\IIS Express\Asp.Net Core Module\V2\aspnetcorev2.dll
Şema
IIS
%windir%\System32\inetsrv\config\schema\aspnetcore_schema.xml
%windir%\System32\inetsrv\config\schema\aspnetcore_schema_v2.xml
IIS Express
%ProgramFiles%\IIS Express\config\schema\aspnetcore_schema.xml
%ProgramFiles%\IIS Express\config\schema\aspnetcore_schema_v2.xml
Yapılandırma
IIS
%windir%\System32\inetsrv\config\applicationHost.config
IIS Express
Visual Studio:
{APPLICATION ROOT}\.vs\config\applicationHost.config
iisexpress.exe CLI:
%USERPROFILE%\Documents\IISExpress\config\applicationhost.config
Dosyaları dosyada applicationHost.config
arayarak aspnetcore
bulabilirsiniz.
Visual Studio ile yayımlarken Web Dağıtımı'nı yükleme
Web Dağıtımı ile uygulamaları sunuculara dağıtırken, sunucuya Web Dağıtımı'nın en son sürümünü yükleyin. Web Dağıtımı'nı yüklemek için Microsoft İndirme Merkezi'nden bir yükleyici alın.
IIS sitesini oluşturma
Barındırma sisteminde, uygulamanın yayımlanan klasörleriyle dosyalarını içerecek bir klasör oluşturun. Aşağıdaki adımda klasörün yolu, uygulamanın fiziksel yolu olarak IIS'ye sağlanır. Uygulamanın dağıtım klasörü ve dosya düzeni hakkında daha fazla bilgi için bkz. ASP.NET Core dizin yapısı.
IIS Yöneticisi'nde, Bağlantılar panelinde sunucunun düğümünü açın. Siteler klasörüne sağ tıklayın. Bağlam menüsünden Web Sitesi Ekle'yi seçin.
Site adı girin ve Fiziksel yol olarak uygulamanın dağıtım klasörünü ayarlayın. Bağlama yapılandırmasını sağlayın ve Tamam'ı seçerek web sitesini oluşturun:
Uyarı
En üst düzey joker karakter bağlamaları (
http://*:80/
vehttp://+:80
) kullanılmamalıdır. En üst düzey joker karakter bağlamaları uygulamanızda güvenlik açıklarına neden olabilir. Bu durum hem güçlü hem de zayıf joker karakterler için geçerlidir. Joker karakterler yerine açık konak adları kullanın. Üst etki alanının tamamını denetliyorsanız alt etki alanı bağlamasının (örneğin*.mysub.com
) böyle bir güvenlik riski yoktur (güvenlik açığı olan*.com
bağlamasından farklı olarak). Daha fazla bilgi için bkz. RFC 9110: HTTP Semantiği (Bölüm 7.2: Konak ve :yetkili).Sunucunun düğümü altında Uygulama Havuzları'nı seçin.
Sitenin uygulama havuzuna sağ tıklayın ve bağlam menüsünden Temel Ayarlar'ı seçin.
Uygulama Havuzunu Düzenle penceresinde .NET CLR sürümü'nü Yönetilen Kod Yok olarak ayarlayın:
ASP.NET Core ayrı bir işlemde çalıştırılır ve çalışma zamanını yönetir. ASP.NET Core masaüstü CLR'yi (.NET CLR) yüklemeye bağlı değildir. Uygulamayı çalışan işleminde barındırmak için .NET Core için Core Ortak Dil Çalışma Zamanı Modülü (CoreCLR) önyüklenir. .NET CLR sürümü olarak Yönetilen Kod Yok seçeneğinin ayarlanması isteğe bağlıdır ama önerilir.
İşlem içi barındırma modelini kullanan 32 bit SDK ile yayımlanan 32 bit (x86) bağımsız dağıtımı için, Uygulama Havuzu'na 32 bitlik bir izin verin. IIS Yöneticisi'nde Bağlantılar kenar çubuğundaki Uygulama Havuzları'na gidin. Uygulamanın Uygulama Havuzunu seçin. Eylemler kenar çubuğunda Gelişmiş Ayarlar'ı seçin. 32 Bit Uygulamaları Etkinleştir seçeneğini
True
olarak ayarlayın.İşlem içi barındırma modelini kullanan 64 bit (x64) bağımsız dağıtım için 32 bit (x86) işlemleri için uygulama havuzunu devre dışı bırakın. IIS Yöneticisi'nde Bağlantılar kenar çubuğundaki Uygulama Havuzları'na gidin. Uygulamanın Uygulama Havuzunu seçin. Eylemler kenar çubuğunda Gelişmiş Ayarlar'ı seçin. 32 Bit Uygulamaları Etkinleştir seçeneğini
False
olarak ayarlayın.
İşlem modeli kimliğinin düzgün izinlere sahip olduğunu onaylayın.
Uygulama havuzunun ApplicationPoolIdentity olan varsayılan kimliği (İşlem Modeli>Identity) başka bir kimlikle değiştirilirse, yeni kimliğin uygulamanın klasörüne, veritabanına ve diğer gerekli kaynaklarına erişmek için gereken izinlere sahip olduğunu doğrulayın. Örneğin uygulama havuzu için uygulamanın dosyaları okuduğu ve yazdığı klasörlere okuma ve yazma erişimi gerekir.
Windows Kimlik Doğrulaması yapılandırması (İsteğe Bağlı)
Daha fazla bilgi için bkz. Windows kimlik doğrulamasını yapılandırma.
Gölge kopya
IIS için ASP.NET Çekirdek Modülü'ne (ANCM) gölge kopyalama uygulaması derlemeleri, uygulamayı çevrimdışı dosya dağıtarak durdurmaktan daha iyi bir son kullanıcı deneyimi sağlayabilir.
Windows'da bir ASP.NET Core uygulaması çalıştırıldığında, ikili dosyalar değiştirilmeyecek veya değiştirilmeyecek şekilde kilitlenir. Gölge kopyalama, uygulama çalışırken derlemelerin bir kopyasını oluşturarak uygulama derlemelerinin güncelleştirilmasını sağlar.
Gölge kopya sıfır kapalı kalma süresi dağıtımını etkinleştirmeyi amaçlamadığından IIS'nin uygulamayı geri dönüştürmesi beklenir ve bazı istekler 503 Hizmet Kullanılamıyor yanıtı alabilir. Sıfır kapalı kalma süresi dağıtımları için mavi-yeşil dağıtımlar veya Azure dağıtım yuvaları gibi bir desen kullanmanızı öneririz. Gölge kopya, dağıtımlarda kapalı kalma süresini en aza indirmeye yardımcı olur, ancak tamamen ortadan kaldırılamaz.
Gölge kopyalama, içindeki web.config
ANCM işleyici ayarlarını özelleştirerek etkinleştirilir:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<remove name="aspNetCore"/>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified"/>
</handlers>
<aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".logsstdout">
<handlerSettings>
<handlerSetting name="enableShadowCopy" value="true" />
<!-- Ensure that the IIS ApplicationPool identity has permission to this directory -->
<handlerSetting name="shadowCopyDirectory" value="../ShadowCopyDirectory/" />
</handlerSettings>
</aspNetCore>
</system.webServer>
</configuration>
ASP.NET Core
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin