Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Warning
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 9 sürümüne bakın.
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.
Yönetilen yığın boyutunu, stackSize dosyasındaki ayar kullanarak onaltılık bayt web.config cinsinden yapılandırın. Varsayılan boyut 0x100000 bayttır (1 MB). Aşağıdaki örnek, yığın boyutunu onaltılık 0x200000 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="200000" />
</handlerSettings>
</aspNetCore>
Yapılandırmada döndürmeyi engelle
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 dosyası değişirse veya IIS açısından sitenin yoluyla ilgili bir şey değişirse site yeniden başlatılı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
Uygulama geri dönüşümü sırasında 503 olasılığını azaltın
Varsayılan olarak, IIS'ye geri dönüşüm veya kapatma bildirimi gönderilmesi ile ANCM'nin yönetilen sunucuya kapatmayı başlatmasını bildirmesi arasında bir saniyelik bir gecikme vardır. Gecikme, ANCM_shutdownDelay ortam değişkenini kullanarak veya shutdownDelay işleyici ayarını kullanarak yapılandırılabilir. Her iki değer de milisaniye cinsindendir. Gecikme öncelikli olarak aşağıdaki durumlarda bir yarışın olasılığını azaltmaktır:
- IIS, yeni uygulamaya gitmek için istekleri kuyruğa alma işlemini başlatmadı.
- ANCM, eski uygulamaya gelen yeni istekleri reddetmeye başlar.
Bu ayar, gelen isteklerin bu miktarda gecikeceği anlamına gelmez. ayarı, zaman aşımı oluştuktan sonra eski uygulama örneğinin kapanmaya başlayacağını gösterir. Daha yavaş makinelerin veya daha ağır CPU kullanımına sahip makinelerin 503 olasılığını azaltmak için bu değeri ayarlaması gerekebilir.
Aşağıdaki örnek gecikmeyi 5 saniye olarak ayarlar:
<aspNetCore processPath="dotnet"
arguments=".\MyApp.dll"
stdoutLogEnabled="false"
stdoutLogFile="\\?\%home%\LogFiles\stdout"
hostingModel="inprocess">
<handlerSettings>
<handlerSetting name="shutdownDelay" value="5000" />
</handlerSettings>
</aspNetCore>
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 Core Modülü ile Kestrel arasında oluşturulan ara sunucu HTTP protokolünü kullanır. Modül Kestrel ile sunucunun dışında bir konumdan gelen trafiği dinleme riski yoktur.
Bir eşleştirme belirteci, Kestrel tarafından alınan isteklerin IIS üzerinden aracılık edildiğini 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 proxylenen istekte bir başlık (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 siber saldırı aracı 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ılırken, ASP.NET Core Barındırma Paketi yükleyicisini OPT_NO_SHARED_CONFIG_CHECK parametresi 1 olarak ayarlanmış şekilde ç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.configdosyayı dosya paylaşımına aktarın. - IIS Paylaşılan Yapılandırmasını yeniden etkinleştirin.
Data protection
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. Bu, CSRF belirteçlerini ve ASP.NET Core MVC TempData tanımlama bilgilerini içerebilir.
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 ASP.NET Core Data Protection 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 havuzundaki çalışan işlem hesabının erişebileceği bir Kayıt Defteri anahtarı oluşturur. Anahtarlar, makine genelinde bir anahtarla DPAPI kullanılarak hareketsiz haldeyken ş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. X509 sertifikası, dinlenme halindeki anahtarları korumak için 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
Trueolarak ayarlayın.Trueolarak 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.setProfileEnvironmentiçin varsayılan değertruedeğeridir. Bazı senaryolarda (örneğin Windows işletim sistemi)setProfileEnvironmentfalseolarak ayarlanır. Anahtarlar beklendiği gibi kullanıcı profili dizininde depolanmıyorsa:-
%windir%/system32/inetsrv/configklasörüne gidin. -
applicationHost.configdosyasını açın. -
<system.applicationHost><applicationPools><applicationPoolDefaults><processModel>öğesini bulun. -
setProfileEnvironmentözniteliğinin mevcut olmadığını ve bu nedenle varsayılan değerintrueolduğunu onaylayın veya bu özniteliğin değerini açık bir şekildetrueolarak ayarlayı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 çiftliğinde 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'yı yapılandırın.
Veri Koruması için makine genelinde ilke ayarlama
Data Protection sistemi, Data Protection API'lerini kullanan tüm uygulamalar için cihaz genelinde bir varsayılan ilke belirleme desteği sınırlıdır. Daha fazla bilgi için bkz. ASP.NET Core Veri Koruması'na Genel Bakış.
IIS configuration
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 (Optional)
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 (Optional)
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.
Virtual Directories
ASP.NET Core uygulamalarıyla IIS Sanal Dizinleri desteklenmez. Uygulama bir alt uygulama olarak barındırılabilir.
Sub-applications
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 ~/ Sayfalar'da tilde-slash (Razor) gösterimi kullanmalıdır. Tilde-eğik çizgi gösterimi, bir Etiket Yardımcısını tetikleyerek alt uygulamanın yol tabanını oluşturulan göreli bağlantıya ekler.
/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.
Note
Razor bileşenleri (.razor) tilde-slash gösterimini kullanmamalıdır. Daha fazla bilgi için bkz. ASP.NET Core Blazor uygulama temel yolu.
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.
Başka bir ASP.NET Core uygulamasının altında alt uygulama olarak bir ASP.NET Core uygulaması barındırmak için:
Alt uygulama için bir uygulama havuzu oluşturun. .NET için Çekirdek Ortak Dil Çalışma Zamanı (CoreCLR) uygulamayı masaüstü CLR'sinde (.NET CLR) değil çalışan işleminde barındıracak şekilde ö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. Select OK.
İş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).
Application Pools
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ı, bir uygulamanın etki alanları veya yerel hesaplar oluşturmak ve yönetmek zorunda kalmadan benzersiz bir hesap altında çalışması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. IIS Yönetim Konsolu'nda, Gelişmiş Ayarlar altında uygulama havuzunun, IdentityApplicationPoolIdentity kullanacak şekilde ayarlandığından emin olun:
IIS yönetim işlemi Windows Güvenlik Sistemi'nde uygulama havuzunun adıyla güvenli bir tanımlayıcı oluşturur. Kaynaklar bu kimlik kullanılarak güvenli hale getirilebilir. Ancak bu kimlik gerçek bir kullanıcı hesabı değildir ve Windows Kullanıcı Yönetimi 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}formatını, yer tutucunun{APP POOL NAME}uygulama havuzu adı olduğu şekilde, seçilecek nesne adlarını girin alanına girin. Adları Denetle düğmesini seçin. DefaultAppPool içinIIS AppPool\DefaultAppPoolkullanarak adları denetleyin. Adları Denetle düğmesi seçildiğinde nesne adları alanındaDefaultAppPooldeğ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.
Select OK.
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 support
Aşağıdaki IIS dağıtım senaryolarında ASP.NET Core ile birlikte HTTP/2 desteklenir:
- In-process
- Windows Server 2016/Windows 10 veya üzeri; IIS 10 veya üzeri
- TLS 1.2 veya üzeri bağlantısı
- Out-of-process
- 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ı
İşlem içi bir dağıtım sırasında bir HTTP/2 bağlantısı kurulduğunda, HttpRequest.ProtocolHTTP/2 bildirir. HTTP/2 bağlantısı kurulduğunda HttpRequest.ProtocolHTTP/1.1 harici süreç dağıtımı için rapor verir.
İş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 ön kontrol 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 olarakAlwaysRunningayarlayın. Select OK. - 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 ayarınıTrueolarak ayarlayın. Select OK.
web.configkullanarak,<applicationInitialization>öğesini,doAppInitAfterRestarttrueolacak şekilde uygulamanın<system.webServer>dosyasındakiweb.configöğelerine ekleyin.<?xml version="1.0" encoding="utf-8"?> <configuration> <location path="." inheritInChildApplications="false"> <system.webServer> <applicationInitialization doAppInitAfterRestart="true" /> </system.webServer> </location> </configuration>
Idle Timeout
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. Select OK. - Ç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ı
Module
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
Schema
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
Configuration
IIS
%windir%\System32\inetsrv\config\applicationHost.config
IIS Express
Visual Studio:
{APPLICATION ROOT}\.vs\config\applicationHost.configiisexpress.exe CLI:
%USERPROFILE%\Documents\IISExpress\config\applicationhost.config
aspnetcore dosyasında applicationHost.config araması yaparak dosyaları bulabilirsiniz.
Visual Studio ile yayınlarken Web Dağıtımı'nı yükleyin
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 IIS İndirmeleri: Web Dağıtımı bölümüne bakı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:
Warning
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 ana bilgisayar adları kullanın. Üst etki alanının tamamını kontrol ediyorsanız, alt etki alanı joker karakter bağlaması (örneğin*.mysub.com) güvenlik riski oluşturmaz (güvenlik açığı barındıran*.combağ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ı seçeneğini 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 için Core Common Language Runtime (CoreCLR) önyüklendi. .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'nu 32 bit için etkinleştirin. 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
Trueolarak 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
Falseolarak ayarlayın.
İşlem modeli kimliğinin uygun izinlere sahip olduğunu onaylayın.
Uygulama havuzunun varsayılan kimliği (
İşlem Modeli ) ApplicationPoolIdentity başka bir kimliğe değiştirilirse, yeni kimliğin uygulamanın klasörüne, veritabanına ve diğer gerekli kaynaklara erişmek için gerekli 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.
Shadow copy
IIS için ASP.NET Çekirdek Modülü'ne (ANCM) uygulama derlemelerinin gölge kopyalanması, uygulamayı bir çevrimdışı uygulama dosyası 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ştirilmemesi veya yerine başkasının konulmaması için kilitlenir. Gölge kopyalama, uygulama çalışırken derlemelerin bir kopyasını oluşturarak uygulama derlemelerinin güncelleştirilmasını sağlar.
Gölge kopya, kesintisiz dağıtım sağlamayı amaçlamadığından IIS'nin uygulamayı geri dönüştürmesi beklenir. Bu nedenle, bazı istekler 503 Hizmet Kullanılamıyor yanıtı alabilir. Sıfır kesinti süresi dağıtımları için mavi-yeşil dağıtım 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.configANCM 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