ASP.NET Çekirdek Modülü ve IIS'nin gelişmiş yapılandırması
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.
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
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, ortam değişkeni aracılığıyla ANCM_shutdownDelay
veya işleyici ayarı ayarlanarak shutdownDelay
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 Ç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 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ı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. 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 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 genelinde bir anahtarla DPAPI kullanılarak şifrelenir rest .
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ı, konumundaki restanahtarları 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
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.
Not
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çin.
İş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 identity 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. Uygulama havuzu için Gelişmiş Ayarlar'ın 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. Kaynaklar bu identitykullanılarak güvenli hale getirilebilir. Ancak bu identity 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}
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çin.
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çin. - 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çin.
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çin. - Ç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ın yüklenmesi için bkz . IIS İndirmeleri: Web Dağıtımı.
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 modelinin identity uygun izinlere sahip olduğunu onaylayın.
identity Uygulama havuzunun varsayılan değeri (İşlem ModeliIdentity>) ApplicationPoolIdentity yerine başka bir identityöğesine değiştirilirse, yeninin identity 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.
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