IIS ASP.NET Core Windows konak konakları

Internet Information Services (IIS), web uygulamalarını barındırmak için esnek, güvenli ve yönetilebilir bir Web Sunucusudur ve ASP.NET Core.

Desteklenen platformlar

Aşağıdaki işletim sistemleri desteklenmektedir:

  • Windows 7 veya sonraki bir
  • Windows Server 2012 R2 veya sonraki bir

32 bit (x86) veya 64 bit (x64) dağıtım için yayımlanan uygulamalar de destekler. 32 bitlik (x86) bir uygulama dağıtın .NET Core SDK uygulama:

  • 64 bit uygulama için daha büyük sanal bellek adres alanı gerektirir.
  • Daha büyük IIS yığın boyutunu gerektirir.
  • 64 bit yerel bağımlılıkları vardır.

ASP.NET Core Modülünü/Barındırma Paketi'ne yükleme

Aşağıdaki bağlantıyı kullanarak yükleyiciyi indirin:

Geçerli .NET Core Barındırma Paketi yükleyicisi (doğrudan indirme)

ASP.NET Core Modülünü yükleme veya farklı sürümleri yükleme hakkında daha ayrıntılı yönergeler için bkz. .NET Core Barındırma Paketi yükleme.

başlarken

IIS'de bir web sitesi barındırmaya başlama için, başlarken kılavuzumuza bakın.

Azure App Services'de bir web sitesi barındırmaya başlamanız için bkz. Azure App Service kılavuzumuz.

IIS yöneticileri için dağıtım kaynakları

Çakışan geri dönüşüm

Genel olarak, sıfır kesinti süresine sahip dağıtımlar için mavi-yeşil dağıtımlar gibi bir desen kullanılması önerilir. Çakışan Geri Dönüşüm gibi özellikler yardımcı olur, ancak sıfır kapalı kalma süresine sahip bir dağıtım yapabilirsiniz. Daha fazla bilgi için bu soruna GitHub bakın.

İsteğe bağlı istemci sertifikaları

Uygulamanın bir alt kümesini bir sertifika ile korumanız gereken uygulamalar hakkında bilgi için bkz. İsteğe bağlı istemci sertifikaları.

Ek kaynaklar

Iis sunucusuna bir uygulama ASP.NET Core öğretici deneyimi için bkz. IIS'ASP.NET Core uygulama yayımlama .

.NET Core Barındırma Paketi'ne yükleme

Desteklenen işletim sistemleri

Aşağıdaki işletim sistemleri desteklenmektedir:

  • Windows 7 veya sonraki bir
  • Windows Server 2012 R2 veya sonraki bir

HTTP.sys sunucusu (eski adı WebListener) IIS ile ters ara sunucu yapılandırmasında çalışmıyor. sunucusunu Kestrel kullanın.

Azure'da barındırma hakkında bilgi için bkz. ASP.NET Core uygulamalarını Azure App Service dağıtma .

Sorun giderme kılavuzu için ASP.NET Core projelerinde sorun giderme ve hata ayıklama bkz. .

Desteklenen platformlar

32 bit (x86) veya 64 bit (x64) dağıtım için yayımlanan uygulamalar de destekler. 32 bitlik (x86) bir uygulama dağıtın .NET Core SDK uygulama:

  • 64 bit uygulama için daha büyük sanal bellek adres alanı gerektirir.
  • Daha büyük IIS yığın boyutunu gerektirir.
  • 64 bit yerel bağımlılıkları vardır.

32 bit (x86) için yayımlanan uygulamaların IIS Uygulama Havuzları için 32 bit etkinleştirilmiş olması gerekir. Daha fazla bilgi için IIS sitesi oluşturma bölümüne bakın.

64 bit uygulama yayımlamak için 64 bit .NET Core SDK (x64) kullanın. Konak sisteminde 64 bit çalışma zamanı mevcut olmalıdır.

Barındırma modelleri

İşlem içinde barındırma modeli

İşlem içinde barındırmayı kullanan bir ASP.NET Core, IIS çalışan işlemiyle aynı işlemde çalışır. İstekler, giden ağ trafiğini aynı makineye geri döndüren bir ağ arabirimi olan geri döngü bağdaştırıcısı üzerinden ara sunucuya bağlı olmaması nedeniyle işlem içinde barındırma, işlem dışında barındırmaya göre daha iyi performans sağlar. IIS, işlem yönetimini Windows Etkinleştirme Hizmeti (WAS) ile birlikte ele almaktadır.

ASP.NET Core Modülü:

  • Uygulama başlatmayı gerçekleştirir.
  • IIS yerel isteğinin ömrünü işleme.

Aşağıdaki diyagram iis, ASP.NET Core Modülü ve işlem içinde barındırılan bir uygulama arasındaki ilişkiyi gösterir:

ASP.NET Core İşlem içinde barındırma senaryosunda modül

  1. Web'den çekirdek modu sürücüye bir istek HTTP.sys gelir.
  2. Sürücü, yerel isteği web sitesinin yapılandırılmış bağlantı noktası üzerinden IIS'ye (genellikle 80 (HTTP) veya 443 (HTTPS) yönlendirmektedir.
  3. ASP.NET Core Modülü yerel isteği alır ve IIS HTTP Sunucusuna () IISHttpServer iletir. IIS HTTP Sunucusu, IIS için isteği yerelden yönetilene dönüştüren bir işlem sırasında sunucu uygulamasıdır.

IIS HTTP Sunucusu isteği işledikten sonra:

  1. İstek, ASP.NET Core işlem hattına gönderilir.
  2. Ara yazılım işlem hattı isteği işler ve uygulamanın HttpContext mantığına örnek olarak iletir.
  3. Uygulamanın yanıtı IIS HTTP Sunucusu üzerinden IIS'ye geri geçirildi.
  4. IIS, isteği başlatan istemciye yanıtı gönderir.

İşlem içinde barındırma, mevcut uygulamalar için kabul etmektir. Web ASP.NET Core, işlem içinde barındırma modelini kullanır.

CreateDefaultBuilderIServer UseIIS CoreCLR'yi önyüklemek ve uygulamayı IIS çalışan işleminin ( veya ) içinde barındırmak için yöntemini çağırarak bir örnek w3wp.exe iisexpress.exe ekler. Performans testleri, bir .NET Core uygulamasını işlem içinde barındırmanın, uygulamanın işlem dışı barındırma ve istekleri için ara sunucu ile barındırmaya kıyasla önemli ölçüde daha yüksek istek aktarım hızı sun olduğunu Kestrel belirtir.

Tek bir dosya yürütülebilir dosyası olarak yayımlanan uygulamalar işlem içinde barındırma modeli tarafından yüklenemiyor.

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

Bu ASP.NET Core IIS çalışan işleminden ayrı bir işlemde çalıştırıla olduğundan, ASP.NET Core Modülü işlem yönetimini ele almaktadır. Modül, ilk istek ASP.NET Core uygulamanın işlemini başlatır ve kapandığında veya kilitleniyorsa uygulamayı yeniden başlatır. Bu temelde, Windows Process Activation Service (WAS) tarafından yönetilen işlem içinde çalıştıran uygulamalarla görülen davranıştır.

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

ASP.NET Core İşlem dışında barındırma senaryosunda modül

  1. İstekler web'den çekirdek modu sürücüye HTTP.sys gelir.
  2. Sürücü, istekleri web sitesinin yapılandırılmış bağlantı noktası üzerinden IIS'ye yönlendirmektedir. Yapılandırılan bağlantı noktası genellikle 80 (HTTP) veya 443 'tir (HTTPS).
  3. Modül, istekleri uygulama için rastgele Kestrel bir bağlantı noktası üzerinden üzerine 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 aracılığıyla bağlantı noktasını belirtir. Uzantı, UseIISIntegration sunucuyu üzerinde dinleyecek şekilde yapılandırıyor. http://localhost:{PORT} Ek denetimler gerçekleştirilir ve modülden kaynaklanmazsa istekler reddedilir. Modül HTTPS iletmeyi desteklemez. İstekler, IIS tarafından HTTPS üzerinden alınsa bile HTTP üzerinden iletildi.

Modülden isteği alan istek, ara Kestrel yazılım işlem hattına ASP.NET Core iletiliyor. Ara yazılım işlem hattı isteği işler ve uygulamanın HttpContext mantığına örnek olarak iletir. IIS Tümleştirmesi tarafından eklenen ara yazılım şemasını, uzak IP'yi ve yol tabanını, isteği adresine ileterek hesaba katacak şekilde Kestrel ler. Uygulamanın yanıtı IIS'ye geri geçirildi ve bu da isteği başlatan HTTP istemcisine geri iletildi.

ASP.NET Core modülü yapılandırma kılavuzu için bkz ASP.NET Core Modülü ..

Barındırma hakkında daha fazla bilgi için bkz. ASP.NET Core ana bilgisayar.

Uygulama yapılandırması

Iısıntegration bileşenlerini etkinleştirin

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

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

Hakkında daha fazla bilgi için CreateDefaultBuilder bkz ASP.NET Core .NET genel ana bilgisayarı ..

IIS seçenekleri

İşlem içi barındırma modeli

IIS sunucu seçeneklerini yapılandırmak için, içinde için bir hizmet yapılandırması IISServerOptions ekleyin ConfigureServices . Aşağıdaki örnek, Automatıcauthentication 'ı devre dışı bırakır:

services.Configure<IISServerOptions>(options => 
{
    options.AutomaticAuthentication = false;
});
Seçenek Varsayılan Ayar
AutomaticAuthentication true trueııs sunucusu HttpContext.User kimliği doğrulanmış Windows kimlik doğrulamasıtarafından ayarlanır. İse false , sunucu yalnızca bir kimlik sağlar HttpContext.User ve tarafından açıkça istendiğinde sorunları yanıtlar AuthenticationScheme . Windows İçin IIS 'nin çalışması için kimlik doğrulaması etkinleştirilmelidir AutomaticAuthentication . daha fazla bilgi için Windows kimlik doğrulamasıkonusuna bakın.
AuthenticationDisplayName null Oturum açma sayfalarındaki kullanıcılara gösterilen görünen adı ayarlar.
AllowSynchronousIO false Ve için zaman uyumlu g/ç 'ye izin verilip verilmeyeceğini belirtir HttpContext.Request HttpContext.Response .
MaxRequestBodySize 30000000 İçin en büyük istek gövdesi boyutunu alır veya ayarlar HttpRequest . IIS 'nin maxAllowedContentLength , içindeki kümesinden önce işlenecek sınıra sahip olduğunu unutmayın MaxRequestBodySize IISServerOptions . ' Nin değiştirilmesi MaxRequestBodySize , etkilemez maxAllowedContentLength . Arttırmak için maxAllowedContentLength ' de bir giriş ekleyerek web.config maxAllowedContentLength daha yüksek bir değere ayarlayın. Daha fazla ayrıntı için bkz. yapılandırma.

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

IIS seçeneklerini yapılandırmak için, içinde için bir hizmet yapılandırması IISOptions ekleyin ConfigureServices . Aşağıdaki örnek, uygulamanın doldurulmasını önler HttpContext.Connection.ClientCertificate :

services.Configure<IISOptions>(options => 
{
    options.ForwardClientCertificate = false;
});
Seçenek Varsayılan Ayar
AutomaticAuthentication true true ııs tümleştirme ara yazılımı , HttpContext.User kimliği doğrulanmış Windows kimlik doğrulamasıtarafından ayarlanır. İse false , ara yazılım için yalnızca bir kimlik sağlar HttpContext.User ve tarafından açıkça istendiğinde sorunları yanıtlar AuthenticationScheme . Windows İçin IIS 'nin çalışması için kimlik doğrulaması etkinleştirilmelidir AutomaticAuthentication . daha fazla bilgi için Windows kimlik doğrulaması konusuna bakın.
AuthenticationDisplayName null Oturum açma sayfalarındaki kullanıcılara gösterilen görünen adı ayarlar.
ForwardClientCertificate true trueVe MS-ASPNETCORE-CLIENTCERT istek üst bilgisi varsa, HttpContext.Connection.ClientCertificate doldurulur.

Proxy sunucusu ve yük dengeleyici senaryoları

ııs tümleştirme ara yazılımı ve ASP.NET Core modülü, iletmek üzere yapılandırılır:

  • Düzen (HTTP/HTTPS).
  • İsteğin kaynaklandığı uzak IP adresi.

IIS tümleştirme ara yazılımı , Iletilen üstbilgiler ara yazılımını yapılandırır.

Ek proxy sunucularının ve yük dengeleyiciler arkasında barındırılan uygulamalar için ek yapılandırma gerekebilir. daha fazla bilgi için bkz. proxy sunucularıyla ve yük dengeleyicilerle çalışacak ASP.NET Core yapılandırma.

web.config dosyasýný

web.configdosya ASP.NET Core modülünüyapılandırır. proje yayımlandığında dosyanın oluşturulması, dönüştürülmesi ve yayımlanması web.config bir MSBuild hedefi () tarafından işlenir _TransformWebConfig . Bu hedef, Web SDK hedeflerinde () bulunur Microsoft.NET.Sdk.Web . SDK proje dosyasının en üstünde ayarlanır:

<Project Sdk="Microsoft.NET.Sdk.Web">

projede bir web.config dosya yoksa, dosya doğru şekilde oluşturulur processPath ve arguments ASP.NET Core modülünü yapılandırıp yayımlanan çıktıyataşınır.

projede bir web.config dosya varsa, dosya doğru şekilde dönüştürülür processPath ve arguments ASP.NET Core modülünü yapılandırıp yayımlanan çıktıya taşınır. Dönüştürme, dosyadaki IIS yapılandırma ayarlarını değiştirmez.

web.configDosya, ETKIN IIS modüllerini denetleyen ek IIS yapılandırma ayarları sağlayabilir. ASP.NET Core uygulamalarla istekleri işleyebilen ııs modülleri hakkında daha fazla bilgi için bkz. ııs modules konusu.

Web SDK 'sının dosyayı dönüştürülmesini engellemek için web.config , <IsTransformWebConfigDisabled> Proje dosyasındaki özelliğini kullanın:

<PropertyGroup>
  <IsTransformWebConfigDisabled>true</IsTransformWebConfigDisabled>
</PropertyGroup>

Web SDK 'sının dosyayı dönüştürmesiyle devre dışı bırakılırken, processPath ve arguments geliştiricisi tarafından el ile ayarlanması gerekir. Daha fazla bilgi için bkz. ASP.NET Core Modülü.

web.config dosya konumu

ASP.NET Core modülünü doğru bir şekilde ayarlamak için, web.config dağıtılan uygulamanın içerik kök yolunda (genellikle uygulama temel yolu), dosyanın mevcut olması gerekir. Bu, IIS 'ye sunulan Web sitesi fiziksel yoluyla aynı konumdadır. web.configWeb dağıtımı kullanarak birden çok uygulama yayımlamayı etkinleştirmek için uygulamanın kökünde dosya gereklidir.

Gizli dosyalar, uygulamanın fiziksel yolunda {ASSEMBLY}.runtimeconfig.json {ASSEMBLY}.xml (XML belge açıklamaları) bulunur ve {ASSEMBLY}.deps.json burada yer tutucunun {ASSEMBLY} derleme adıdır. web.configDosya mevcut olduğunda ve site normal olarak başlatıldığında, ISTENIRSE IIS bu hassas dosyaları sunmaz. web.configDosya eksikse, yanlış şekilde adlandırılmış veya site normal başlatma için YAPıLANDıRıMıŞSA IIS hassas dosyalara genel olarak sunabilir.

web.configDosyanın her zaman dağıtımda mevcut olması, doğru şekilde adlandırılması ve siteyi normal başlangıç için yapılandırabiliyor olması gerekir. web.configDosyayı bir üretim dağıtımından hiçbir şekilde kaldırmayın.

Web.config’i dönüştürme

web.configYayımlama sırasında dönüştürmeniz gerekiyorsa bkz Web.config’i dönüştürme .. web.configYapılandırma, profil veya ortama göre ortam değişkenlerini ayarlamak için Yayımla ' ya dönüştürmeniz gerekebilir.

IIS yapılandırması

Windows Sunucu işletim sistemleri

Web sunucusu (IIS) sunucu rolünü etkinleştirin ve rol hizmetleri oluşturun.

  1. Yönet menüsündeki rol ve özellik ekleme sihirbazı ' nı veya Sunucu Yöneticisi bağlantısındaki bağlantıyı kullanın. Sunucu rolleri adımında, Web sunucusu (IIS) kutusunu işaretleyin.

    Sunucu rollerini seçin adımında Web sunucusu IIS rolü seçilidir.

  2. Özellikler adımından sonra, Web sunucusu (IIS) için rol hizmetleri adımı yüklenir. İstenen IIS rol hizmetlerini seçin veya varsayılan rol hizmetlerini kabul edin.

    Rol hizmetlerini seçin adımında varsayılan rol hizmetleri seçilidir.

    Windows Kimlik doğrulaması (Isteğe bağlı)
    Windows kimlik doğrulamasını etkinleştirmek için şu düğümleri genişletin: Web sunucusu > güvenliği. Windows kimlik doğrulaması özelliğini seçin. daha fazla bilgi için bkz. Windows <windowsAuthentication> kimlik doğrulaması ve Windows kimlik doğrulamasını yapılandırma.

    WebSockets (Isteğe bağlı)
    WebSockets ASP.NET Core 1,1 veya üzeri bir sürümde desteklenir. WebSockets 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.

  3. Web sunucusu rolü ve hizmetlerini yüklemek için onay adımına ilerleyin. Web sunucusu (IIS) rolü yüklendikten sonra sunucu/IIS yeniden başlatması gerekli değildir.

masaüstü işletim sistemlerini Windows

IIS Yönetim Konsolu ve World Wide Web hizmetlerini etkinleştirin.

  1. denetim masası > programlar > programlar ve özellikler ' e gidin > Windows özellikleri açın veya kapatın (ekranın sol tarafında).

  2. Internet Information Services düğümünü açın. Web yönetimi araçları düğümünü açın.

  3. IIS Yönetim Konsolu kutusunu işaretleyin.

  4. World Wide Web Hizmetleri kutusunu işaretleyin.

  5. World Wide Web Hizmetleri için varsayılan özellikleri kabul edın veya IIS özelliklerini özelleştirin.

    Windows Kimlik doğrulaması (Isteğe bağlı)
    Windows kimlik doğrulamasını etkinleştirmek için şu düğümleri genişletin: World Wide Web hizmetleri > güvenliği. Windows kimlik doğrulaması özelliğini seçin. daha fazla bilgi için bkz. Windows <windowsAuthentication> kimlik doğrulaması ve Windows kimlik doğrulamasını yapılandırma.

    WebSockets (Isteğe bağlı)
    WebSockets, 1.1 veya ASP.NET Core ile birlikte de desteklene. 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.

  6. IIS yüklemesi yeniden başlatma gerektiriyorsa sistemi yeniden başlatın.

IIS Yönetim Konsolu ve World Wide Web Hizmetleri, Windows Özellikleri'Windows seçilir.

.NET Core Barındırma Paketi'ne yükleme

.NET Core Barındırma Paketi'nin barındırma sistemine yükleyin. Paketi .NET Core Çalışma Zamanı, .NET Core Kitaplığı ve ASP.NET Core Modülü'ASP.NET Core yüklenir. Modül, uygulama ASP.NET Core IIS'nin arkasında çalışmasına olanak sağlar.

Önemli

Barındırma Paketi IIS'den önce yüklendiyse, paket yüklemesi onarılması gerekir. IIS'yi yükledikten sonra Barındırma Paketi yükleyicisini yeniden çalıştırın.

.NET Core'un 64 bit (x64) sürümü yüklendikten sonra Barındırma Paketi yüklenirse, SDK'lar eksik gibi görünebilir (.NET Core SDK algılanmadı). Sorunu çözmek için ASP.NET Core projelerinde sorun giderme ve hata ayıklama bkz. .

Doğrudan indirme (geçerli sürüm)

Aşağıdaki bağlantıyı kullanarak yükleyiciyi indirin:

Geçerli .NET Core Barındırma Paketi yükleyicisi (doğrudan indirme)

Yükleyicinin önceki sürümleri

Yükleyicinin önceki bir sürümünü almak için:

  1. .NET Core İndir sayfasına gidin.
  2. İstediğiniz .NET Core sürümünü seçin.
  3. Uygulamaları çalıştır - Çalışma zamanı sütununda, istenen .NET Core çalışma zamanı sürümünün satırına tıklayın.
  4. Barındırma Paketi bağlantısını kullanarak yükleyiciyi indirin.

Uyarı

Bazı yükleyiciler, yaşam sürelerine (EOL) ulaşmış olan ve artık Microsoft tarafından desteklenen sürümler içerir. Daha fazla bilgi için destek ilkesine bakın.

Barındırma Paketi'ne yükleme

  1. Yükleyiciyi sunucuda çalıştırın. Yükleyiciyi bir yönetici komut kabuğundan çalıştırarak aşağıdaki parametreler kullanılabilir:

    • OPT_NO_ANCM=1: ASP.NET Core Modülünü yüklemeyi atla.
    • OPT_NO_RUNTIME=1: .NET Core çalışma zamanının yüklemesini atla. Sunucu yalnızca kendi içinde dağıtımları (SCD) barındırıyor olduğunda kullanılır.
    • OPT_NO_SHAREDFX=1: ASP.NET Paylaşılan Çerçeve'yi (ASP.NET çalışma zamanı) yüklemeyi atlar. Sunucu yalnızca kendi içinde dağıtımları (SCD) barındırıyor olduğunda kullanılır.
    • OPT_NO_X86=1: x86 çalışma zamanlarını yüklemeyi atla. 32 bit uygulamaları barındırmaycanız biliyorken bu parametreyi kullanın. Gelecekte hem 32 bit hem de 64 bit uygulamaları barındırma ihtimaliniz varsa, bu parametreyi kullanmanın ve her iki çalışma zamanının da yüklemesini yapma.
    • OPT_NO_SHARED_CONFIG_CHECK=1: Paylaşılan yapılandırma ( ) IIS yüklemesi ile aynı makinede olduğunda IIS Paylaşılan Yapılandırması applicationHost.config kullanma denetimi devre dışıdır. Yalnızca 2.2 veya ASP.NET Core Barındırma PaketLeyicisi yükleyicileri için kullanılabilir. Daha fazla bilgi için bkz. ASP.NET Core Modülü.
  2. IIS'nin yeniden başlatılması, yükleyici tarafından yapılan bir ortam değişkeni olan sistem PATH'inde bir değişiklik alır. Web sunucusunu yeniden başlatmak için, Windows Etkinleştirme Hizmeti'ni (WAS) durdurun ve World Wide Web Yayımlama Hizmeti'ni (W3SVC) yeniden başlatın. Sistemi yeniden başlatın veya yükseltilmiş bir komut kabuğunda aşağıdaki komutları yürütün:

    net stop was /y
    net start w3svc
    

ASP.NET Core, paylaşılan çerçeve paketlerinin düzeltme eki yayınlarında ileri sarma davranışını benimsemez. Paylaşılan çerçeveyi yeni bir barındırma paketi yükleyerek yükselttikten sonra, sistemi yeniden başlatın veya yükseltilmiş bir komut kabuğunda aşağıdaki komutları yürütün:

net stop was /y
net start w3svc

Not

IIS Paylaşılan Yapılandırması hakkında daha fazla bilgi için bkz ASP.NET Core IIS Paylaşılan Yapılandırması ile Modül.

Web Dağıtımı ile yayımlarken yükleme Visual Studio

uygulamaları, Web Dağıtımı sunucularadağıtırken, sunucuya uygulama Web Dağıtımı sürümünü yükleyin. Bir Web Dağıtımı yüklemek için Web Platformu Yükleyicisi'yi (WebPI) kullanın veya doğrudan Microsoft İndirme Merkezi'nden bir yükleyici alın. Tercih edilen yöntem WebPI kullanmaktir. WebPI, barındırma sağlayıcıları için tek başına kurulum ve yapılandırma sunar.

IIS sitesini oluşturma

  1. Barındırma sisteminde, uygulamanın yayımlanan klasör ve dosyalarını içeren bir klasör oluşturun. Aşağıdaki bir adımda, klasörün yolu uygulamanın fiziksel yolu olarak IIS'ye sağlanır. Bir 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ı .

  2. 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.

  3. Bir Site adı girin ve Fiziksel yolu uygulamanın dağıtım klasörüne ayarlayın. Bağlama yapılandırmasını sağlama ve Tamam'ı seçerek web sitesini oluşturma:

    Web Sitesi Ekle adımını Site adı, fiziksel yol ve Ana bilgisayar adı olarak girin.

    Uyarı

    Üst düzey joker karakter bağlamaları ( http://*:80/ http://+:80 ve ) kullanılmamalı. Üst düzey joker karakter bağlamaları, güvenlik açıklarına karşı uygulamanıza açabilirsiniz. Bu hem güçlü hem de zayıf joker karakterler için geçerlidir. Joker karakter yerine açık konak adları kullanın. Alt etki alanı joker karakter bağlaması (örneğin, ) üst etki alanının tamamını (güvenlik açığı olan yerine) denetim altına alırsanız bu güvenlik *.mysub.com *.com riski yoktur. Daha fazla bilgi için bkz. rfc7230 section-5.4.

  4. Sunucunun düğümü altında Uygulama Havuzları'ı seçin.

  5. Sitenin uygulama havuzuna sağ tıklayın ve bağlam menüsünden Temel Ayarlar'ı seçin.

  6. Uygulama Havuzunu Düzenle penceresinde .NET CLR sürümünü Yönetilen Kod Yok olarak ayarlayın:

    .NET CLR sürümü için Yönetilen Kod Yok'a ayarlayın.

    ASP.NET Core ayrı bir işlemde çalışır ve çalışma zamanlarını yönetir. ASP.NET Core masaüstü CLR'sini (.NET CLR) yüklemeye güvenmez. Uygulamayı çalışan sürecinde barındırmak için .NET Core için Çekirdek Ortak Dil Çalışma Zamanı (CoreCLR) önyüklandı. .NET CLR sürümünü Yönetilen Kod Yok olarak ayarlama isteğe bağlıdır ancak önerilir.

  7. ASP.NET Core 2.2 veya sonraki bir tarihi:

    • İşlem içinde barındırma modelini kullanan bir 32 bit SDK ile yayımlanan kendi içinde 32 bit (x86) dağıtım için,Uygulama Havuzunu 32 bit için etkinleştirin. IIS Yöneticisi'nde Bağlantılar kenar çubuğu'nde Uygulama Havuzları'nı bulun. Uygulamanın Uygulama Havuzunu seçin. Eylemler kenar çubuğu'nda Gelişmiş veri Ayarlar. 32 Bit Uygulamaları Etkinleştir'i olarak True ayarlayın.

    • İşlem içinde barındırma modelini kullanan 64 bit (x64) kendi içinde dağıtım için, 32 bit (x86) işlemler için uygulama havuzunu devre dışı bırakma. IIS Yöneticisi'nde Bağlantılar kenar çubuğu'nde Uygulama Havuzları'nı bulun. Uygulamanın Uygulama Havuzunu seçin. Eylemler kenar çubuğu'nda Gelişmiş veri Ayarlar. 32 Bit Uygulamaları Etkinleştir'i olarak False ayarlayın.

  8. İşlem modeli kimliğinin uygun izinlere sahip olduğunu onaylayın.

    Uygulama havuzunun varsayılan kimliği ( İşlem Modeli > Identity ) Identity ApplicationPool'dan 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, uygulamanın dosyaları okuduğu ve yazdığı klasörlere okuma ve yazma erişimi gerektirir.

Windows Kimlik doğrulama yapılandırması (İsteğe bağlı)
Daha fazla bilgi için bkz. Kimlik Windows yapılandırma.

Uygulamayı dağıtma

Uygulamayı, IIS sitesi oluşturma bölümünde kurulan IIS Fiziksel yol klasörüne dağıtın. Web Dağıtımı dağıtım için önerilen mekanizmadır, ancak uygulamayı proje klasöründen barındırma sisteminin dağıtım klasörüne taşımaya için çeşitli publish seçenekler vardır.

Web Dağıtımı ile Visual Studio

Uygulama Visual Studio için yayımlama profili oluşturma ASP.NET Core yayımlama profili oluşturma hakkında bilgi edinmek için Web Dağıtımı. Barındırma sağlayıcısı bir Yayımlama Profili veya oluşturma desteği sağlarsa, profillerini indirin ve Yayımla iletişim kutusunu Visual Studio içeri aktarın:

Yayımla iletişim kutusu sayfası

Web Dağıtımı dışında Visual Studio

Web Dağıtımı komut satırına Visual Studio dışında da kullanılabilir. Daha fazla bilgi için bkz. Web Dağıtım Aracı.

Web Dağıtımı alternatifleri

Uygulamayı barındırma sistemine taşımak için el ile kopyalama, xcopy, Robocopyveya PowerShellgibi çeşitli yöntemlerden birini kullanın.

ııs 'ye dağıtım ASP.NET Core hakkında daha fazla bilgi için, ııs yöneticileri için dağıtım kaynakları bölümüne bakın.

Web sitesine gidin

Uygulama barındırma sistemine dağıtıldıktan sonra, uygulamanın genel uç noktalarından birine bir istek oluşturun.

Aşağıdaki örnekte, site bağlantı noktasındaki IIS ana bilgisayar adına bağlıdır www.mysite.com 80 . Bir istek şu şekilde yapılır http://www.mysite.com :

Microsoft Edge tarayıcısı ııs başlangıç sayfasını yükledi.

Kilitli dağıtım dosyaları

Dağıtım klasöründeki dosyalar, uygulama çalışırken kilitlenir. Dağıtım sırasında kilitli dosyaların üzerine yazılamaz. Kilitli dosyaları bir dağıtımda serbest bırakmak için aşağıdaki yaklaşımlardan birini kullanarak uygulama havuzunu durdurun:

  • Proje dosyasında Web Dağıtımı ve başvurusunu kullanın Microsoft.NET.Sdk.Web . app_offline.htmWeb uygulaması dizininin köküne bir dosya yerleştirilir. dosya olduğunda, ASP.NET Core modülü uygulamayı düzgün bir şekilde kapatır ve app_offline.htm dağıtım sırasında dosyayı hizmet eder. daha fazla bilgi için ASP.NET Core modülü yapılandırma başvurusunabakın.

  • Sunucu üzerindeki IIS Yöneticisi 'nde uygulama havuzunu el ile durdurun.

  • Atmak için PowerShell 'i kullanın app_offline.htm (PowerShell 5 veya üzerini gerektirir):

    $pathToApp = 'PATH_TO_APP'
    
    # Stop the AppPool
    New-Item -Path $pathToApp app_offline.htm
    
    # Provide script commands here to deploy the app
    
    # Restart the AppPool
    Remove-Item -Path $pathToApp app_offline.htm
    

Veri koruma

ASP.NET Core veri koruma yığını , kimlik doğrulamasında kullanılan ara yazılımlar dahil olmak üzere birkaç ASP.NET Core middlewarestarafından kullanılır. Veri koruma API 'Leri Kullanıcı kodu tarafından çağrılmasa bile, kalıcı bir şifreleme anahtarı deposuoluşturmak için veri koruma bir dağıtım betiği veya Kullanıcı kodu ile yapılandırılmalıdır. Veri koruması yapılandırılmamışsa, anahtarlar bellekte tutulur ve uygulama yeniden başlatıldığında atılır.

Uygulama yeniden başlatıldığında anahtar halkası bellekte depolanıyorsa:

  • Tüm cookie tabanlı kimlik doğrulama belirteçleri geçersiz kılındı.
  • Kullanıcıların bir sonraki isteğinde yeniden oturum açması gerekir.
  • Anahtar halkası ile korunan tüm veriler artık çözülemez. bu, csrf belirteçlerini ve ASP.NET Core MVC tempdata cookie söğesini içerebilir.

Anahtar halkasını sürdürmek için IIS altındaki veri korumasını yapılandırmak için aşağıdaki yaklaşımlardan birini kullanın:

  • Veri koruma kayıt defteri anahtarları oluşturma

    ASP.NET Core uygulamalar tarafından kullanılan veri koruma anahtarları, uygulamaların dış kayıt defterinde saklanı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, web grubu olmayan ııs yüklemeleri için, veri koruma Provision-AutoGenKeys.ps1 PowerShell betiği , bir ASP.NET Core uygulamasıyla kullanılan her uygulama havuzu için kullanılabilir. Bu betik, yalnızca uygulamanın uygulama havuzunun çalışan işlem hesabına erişilebilen HKLM Kayıt defterinde 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 bir UNC yolu kullanacak şekilde yapılandırılabilir. Varsayılan olarak, veri koruma anahtarları şifrelenmez. ağ paylaşımının dosya izinlerinin, uygulamanın çalıştırıldığı Windows hesapla sınırlı olduğundan emin olun. Bir x509 sertifikası, bekleyen anahtarları korumak için kullanılabilir. Kullanıcıların sertifikaları karşıya yüklemesine izin vermek için bir mekanizma düşünün: sertifikaları kullanıcının güvenilen sertifika deposuna yerleştir ve kullanıcının uygulamasının çalıştığı tüm makinelerde kullanılabilir olduklarından emin olun. ayrıntılar için bkz. ASP.NET Core veri korumasını yapılandırma .

  • Kullanıcı profilini yüklemek için IIS uygulama havuzunu yapılandırma

    bu ayar, uygulama havuzunun gelişmiş Ayarlar altındaki işlem modeli bölümünde bulunur. Kullanıcı profilini yükle ' ye ayarlayın True . Olarak ayarlandığında True anahtarlar Kullanıcı profili dizininde depolanır ve Kullanıcı hesabına özgü bir ANAHTARLA DPAPI kullanılarak korunur. anahtarlar, % LOCALAPPDATA%/ASP.NET/dataprotection-keys klasörü için kalıcıdır.

    Uygulama havuzunun Setprofileenvironment özniteliğinin de etkinleştirilmesi gerekir. Varsayılan değeri setProfileEnvironment true . Bazı senaryolarda (örneğin, Windows OS), setProfileEnvironment olarak ayarlanır false . Anahtarlar beklenen şekilde Kullanıcı profili dizininde depolanmıyorsa:

    1. % Windir%/system32/inetsrv/config klasörüne gidin.
    2. applicationHost.config dosyasını açın.
    3. Öğesini bulun <system.applicationHost><applicationPools><applicationPoolDefaults><processModel> .
    4. setProfileEnvironmentÖzniteliğinin mevcut olmadığını, değeri varsayılan olarak değerini, true veya özniteliğin değerini olarak olarak ayarlandığını doğrulayın true .
  • Dosya sistemini anahtar halka deposu olarak kullanma

    Dosya sistemini anahtar halka deposu olarak kullanmakiçin uygulama kodunu ayarlayın. Anahtar halkasını korumak ve sertifikanın güvenilen bir sertifika olduğundan emin olmak için bir x509 sertifikası kullanın. Sertifika kendinden imzalı ise, sertifikayı güvenilen kök depoya yerleştirin.

    IIS 'yi bir Web grubunda kullanırken:

    • Tüm makinelerin erişebileceği bir dosya paylaşma kullanın.
    • Her makineye bir x509 sertifikası dağıtın. Kodda veri korumasınıyapılandırın.
  • Veri koruma için makineye özel bir ilke ayarlama

    Veri koruma sistemi, veri koruma API 'Lerini kullanan tüm uygulamalar için varsayılan makine genelinde bir ilke ayarlamak için sınırlı destek içerir. Daha fazla bilgi için bkz. ASP.NET Core Veri koruma.

Sanal Dizinler

ııs sanal dizinleri ASP.NET Core uygulamalarla desteklenmez. Bir uygulama, bir alt uygulamaolarak barındırılabilir.

Alt uygulamalar

ASP.NET Core bir uygulama, bir ııs alt uygulaması (alt uygulama)olarak barındırılabilir. Alt uygulamanın yolu, kök uygulamanın URL 'sinin bir parçası haline gelir.

Alt uygulama içindeki statik varlık bağlantıları, tilde işareti ( ~/ ) gösterimini kullanmalıdır. Tilde işareti gösterimi, alt uygulamanın pathbase 'i işlenmiş göreli bağlantıya eklemek için bir etiket yardımcısını tetikler. Üzerindeki bir alt uygulama için /subapp_path ile bağlantılı bir görüntü src="~/image.png" olarak işlenir src="/subapp_path/image.png" . 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.

Statik bir varlığın src özniteliği mutlak bir yola ayarlandıysa (örneğin, src="/image.png" ), bağlantı alt uygulamanın pathbase olmadan işlenir. Kök uygulamanın statik dosya ara yazılımı, statik varlık kök uygulamadan kullanılabilir olmadığı takdirde 404-bulunamayan bir Yanıt ile sonuçlanır. Bu, kök uygulamanın Web kökündenvarlık sunmaya çalışır.

bir ASP.NET Core uygulamasını başka bir ASP.NET Core uygulaması altında alt uygulama olarak barındırmak için:

  1. Alt uygulama için bir uygulama havuzu oluşturun. .NET Core için çekirdek ortak dil çalışma zamanı (CoreCLR), uygulamayı masaüstü CLR (.NET CLR) değil, çalışan işlemde barındırmak için önyüklenirken .NET CLR sürümünü yönetilen kod olmadan ayarlayın.

  2. Kök siteyi, kök sitenin altındaki bir klasörde bulunan alt uygulamayla IIS Yöneticisi 'ne ekleyin.

  3. IIS Yöneticisi 'ndeki alt uygulama klasörüne sağ tıklayın ve uygulamaya Dönüştür' ü seçin.

  4. Uygulama Ekle iletişim kutusunda, alt uygulama için oluşturduğunuz uygulama havuzunu atamak üzere uygulama havuzunun Seç düğmesini kullanın. Tamam’ı seçin.

Ayrı bir uygulama havuzunun alt uygulamaya atanması, işlem içi barındırma modelinin kullanıldığı bir gereksinimdir.

iş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 ASP.NET Core Modülü ..

web.config ile IIS yapılandırması

ııs yapılandırması, <system.webServer> ASP.NET Core modüllü ASP.NET Core uygulamalar için işlevsel olan ııs senaryoları için web.config bölümünden etkilenir. Örneğin, IIS yapılandırması dinamik sıkıştırma için işlevseldir. ııs sunucu düzeyinde dinamik sıkıştırma kullanmak üzere yapılandırıldıysa, <urlCompression> uygulamanın web.config dosyasındaki öğesi, ASP.NET Core bir uygulama için devre dışı bırakabilir.

Daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın:

Yalıtılmış uygulama havuzlarında çalışan ayrı uygulamalara yönelik ortam değişkenlerini ayarlamak için (IIS 10,0 veya üzeri için desteklenir), IIS başvuru belgelerindeki ortam değişkenleri <environmentVariables> konusunun AppCmd.exe komut bölümüne bakın.

ASP.NET Core tarafından kullanılmayan bölümler

web.config ASP.NET uygulamaların yapılandırma bölümleri ASP.NET Core uygulamalar tarafından yapılandırma için kullanılmıyor:

  • <system.web>
  • <appSettings>
  • <connectionStrings>
  • <location>

ASP.NET Core uygulamalar diğer yapılandırma sağlayıcıları kullanılarak yapılandırılır. Daha fazla bilgi için bkz. yapılandırma ve .NET Core çalışma zamanı yapılandırma ayarları

Uygulama havuzları

Uygulama havuzu yalıtımı, barındırma modeliyle belirlenir:

  • İşlem içi barındırma: uygulamaların ayrı uygulama havuzlarında çalışması gerekir.
  • İşlem dışında barındırma: Her uygulamayı kendi uygulama havuzunda çalıştırarak uygulamaları diğer uygulamalardan yalıtmanızı öneririz.

IIS Web Sitesi Ekle iletişim kutusu varsayılan olarak uygulama başına tek bir uygulama havuzu olarak kullanılır. Bir Site adı sağlanıyorsa, metin otomatik olarak Uygulama havuzu metin kutusuna aktarılır. Site ekleniyorken 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 sağlar. IIS 8.0 veya sonraki bir üzerinde, IIS Yönetici Çalışan süreci (WAS) yeni uygulama havuzunun adıyla bir sanal hesap oluşturur ve uygulama havuzunun çalışan işlemlerini varsayılan olarak bu hesap altında çalıştırır. Uygulama havuzu için Gelişmiş Yönetim Ayarlar IIS Yönetim Konsolu'da, uygulamasının Identity ApplicationPool kullanmak üzere ayarlanmış olduğundan emin olun: Identity

Uygulama havuzu gelişmiş ayarlar iletişim kutusu

IIS yönetim işlemi, Windows Güvenliği System'de uygulama havuzunun adıyla güvenli Windows Güvenliği oluşturur. Bu kimlik kullanılarak kaynakların güvenliği sağlandı. Ancak, bu kimlik gerçek bir kullanıcı hesabı değildir ve Kullanıcı Yönetim Konsolu'Windows'da göster değildir.

IIS çalışan işlemi uygulamaya yükseltilmiş erişim gerektiriyorsa, uygulamayı içeren dizin için Access Control Listesi'ni (ACL) değiştirebilirsiniz:

  1. Windows Gezgini'ni açın ve dizinine gidin.

  2. Dizine sağ tıklayın ve Özellikler'i seçin.

  3. Güvenlik sekmesinin altında Düzenle düğmesini ve ardından Ekle düğmesini seçin.

  4. Konumlar düğmesini seçin ve sistemin seçili olduğundan emin olun.

  5. yer IIS AppPool\{APP POOL NAME} tutucusu uygulama {APP POOL NAME} havuzu adı olarak girin ve Seçlanacak nesne adlarını girin alanına yazın. Adları Kontrol Edin düğmesini seçin. DefaultAppPool için kullanarak adları kontrol IIS AppPool\DefaultAppPool edin. Adları Kontrol Edin düğmesi seçildiğinde, nesne DefaultAppPool adları alanında değeri belirtilmiştir. Uygulama havuzu adını doğrudan nesne adları alanına girmek mümkün değildir. Nesne IIS AppPool\{APP POOL NAME} adını kontrol ederken yer {APP POOL NAME} tutucusu uygulama havuzu adı olan biçimi kullanın.

    Uygulama klasörü için kullanıcıları veya grupları seçin iletişim kutusu: "Adları Denetleme" seçmeden önce nesne adları alanında "DefaultAppPool" uygulama havuzu adı "IIS AppPool" bölümüne " eklenir.

  6. Tamam’ı seçin.

    Uygulama klasörü için kullanıcıları veya grupları seçin iletişim kutusu: "Adları Denetleme" seçeneğinin ardından nesne adları alanında "DefaultAppPool" nesne adı gösterilir.

  7. Okuma & yürütme izinleri varsayılan olarak ver gerekir. Gerektiğinde ek izinler sağlama.

Erişim, ICACLS aracı kullanılarak bir komut isteminde de verebilirsiniz. Örnek DefaultAppPool olarak aşağıdaki komut kullanılır:

ICACLS C:\sites\MyWebApp /grant "IIS AppPool\DefaultAppPool":F

Daha fazla bilgi için icacls konu başlığına bakın.

HTTP/2 desteği

HTTP/2, aşağıdaki IIS ASP.NET Core senaryolarında aşağıdakilerle birlikte de kullanılabilir:

  • İşlem içinde
    • Windows Server 2016/Windows 10 veya sonrası; IIS 10 veya sonraki bir
    • TLS 1.2 veya sonraki bir bağlantı
  • İşlem dışında
    • Windows Server 2016/Windows 10 veya sonrası; IIS 10 veya sonraki bir
    • Genele yönelik uç sunucu bağlantıları HTTP/2 kullanır, Kestrel ancak sunucuya yönelik ters ara sunucu bağlantısı HTTP/1.1 kullanır.
    • TLS 1.2 veya sonraki bir bağlantı

Bir HTTP/2 bağlantısı kurularak işlem sırasında dağıtım için HttpRequest.Protocol raporları. HTTP/2 HTTP/2 bağlantısı kurulu olduğunda işlem dışında dağıtım için HttpRequest.Protocol raporları. HTTP/1.1

İşlem içinde ve işlem dışında barındırma modelleri hakkında daha fazla bilgi için bkz. ASP.NET Core Modülü .

HTTP/2 varsayılan olarak etkindir. Http/2 bağlantısı kurulmamışsa bağlantılar HTTP/1.1'e geri döner. IIS dağıtımları ile HTTP/2 yapılandırması hakkında daha fazla bilgi için bkz. IIS üzerinde HTTP/2.

CORS kontrol öncesi istekleri

Bu bölüm yalnızca ASP.NET Core hedeflenen uygulamalar için .NET Framework.

ASP.NET Core hedef alan bir .NET Framework IÇIN SEÇENEKLER istekleri IIS'de varsayılan olarak uygulamaya geçir geçiri değildir. Uygulamanın IIS işleyicilerini OPTIONS isteklerini geçecek şekilde yapılandırma hakkında bilgi edinmek için bkz. Web API 2'de çıkış ASP.NET istekleri web.config 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ıklarında:

  • Uygulama Başlatma Modülü:Uygulamanın barındırılan işlem içinde veya işlem dışında olması, çalışan işleminin yeniden başlatılması veya sunucunun yeniden başlatılması sırasında otomatik olarak başlatılacak şekilde yalıtılır.
  • Boşta Kalma ZamanAşımı: Uygulamanın işlem içinde barındırılan işlemleri, işlem dışı dönemlerde zaman aşımına neden olmayacak şekilde yalıtılmamaktadır.

Uygulama Başlatma Modülü

İşlem içinde ve işlem dışında barındırılan uygulamalar için geçerlidir.

IIS Uygulaması Başlatma, uygulama havuzu başlatıldığında veya geri dönüştür geldiğinde uygulamaya bir HTTP isteği gönderen bir IIS özelliğidir. İstek, uygulamayı başlatmayı tetikler. Varsayılan olarak, IIS uygulamayı başlatmak için uygulamanın kök URL'sini ( ) bir istekte lar (yapılandırma hakkında daha fazla ayrıntı / için ek kaynaklara bakın).

'de IIS Uygulama Başlatma rolü özelliğinin etkin olduğunu onaylayın:

IIS Windows kullanırken 7 veya daha sonraki masaüstü sistemleri için:

  1. Programlar Denetim Masası > > Özellikler'e gidin > Windows özellikleri açma veya kapatma (ekranın sol tarafı).
  2. Internet Information Services > World Wide Web Services Uygulama Geliştirme > Özellikleri'ne tıklayın.
  3. Uygulama Başlatma onay kutusunu seçin.

Windows Server 2008 R2 veya sonraki bir üzerinde:

  1. Rol ve Özellik Ekleme Sihirbazı'nı açın.
  2. Rol hizmetlerini seçin panelinde Uygulama Geliştirme düğümünü açın.
  3. Uygulama Başlatma onay kutusunu seçin.

Site için Uygulama Başlatma Modülünü etkinleştirmek için aşağıdaki yaklaşımlardan birini kullanın:

  • IIS Yöneticisi'ni kullanma:

    1. Bağlantılar panelinde Uygulama Havuzları'nı seçin.
    2. Listeden uygulamanın uygulama havuzuna sağ tıklayın ve Gelişmiş Uygulama'yı Ayarlar.
    3. Varsayılan Başlangıç Modu OnDemand'dır. Başlangıç Modu'Running olarak ayarlayın. Tamam’ı seçin.
    4. Bağlantılar panelinde Siteler düğümünü açın.
    5. Uygulamaya sağ tıklayın ve Web Sitesi Gelişmiş Web Sitesini > Yönet'i Ayarlar.
    6. Varsayılan Ön Yükleme Etkin ayarı False'tır. Ön Yükleme Etkin'i True olarak ayarlayın. Tamam’ı seçin.
  • kullanarak, öğesini öğesini olarak ayarlanmış şekilde uygulamanın web.configweb.config <applicationInitialization> doAppInitAfterRestart true <system.webServer> ekleyin:

    <?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 sırasında 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ını ayarlayın:

  1. Bağlantılar panelinde Uygulama Havuzları'nı seçin.
  2. Listeden uygulamanın uygulama havuzuna sağ tıklayın ve Gelişmiş Uygulama'yı Ayarlar.
  3. Varsayılan Boşta Kalma Zaman Aşımı (dakika) 20 dakikadır. Boşta Kalma Zaman Aşımı (dakika) için 0 (sıfır) olarak ayarlayın. Tamam’ı seçin.
  4. Çalışan işlemini geri dönüştür.

İşlem dışında barındırılan uygulamaların zamanlamasını önlemek için aşağıdaki yaklaşımlardan birini kullanın:

  • Uygulamayı çalıştırmaya devam etmek için bir dış hizmetten ping atabilirsiniz.
  • Uygulama yalnızca arka plan hizmetlerini barındırlıyorsa, IIS barındırmadan kaçının ve uygulamanın barındırılması için Windows Service ASP.NET Core kullanın.

Uygulama Başlatma Modülü ve Boşta Kalma Zaman Aşımı ek kaynakları

IIS yöneticileri için dağıtım kaynakları

Ek kaynaklar

Iis sunucusuna bir uygulama ASP.NET Core öğretici deneyimi için bkz. IIS'ASP.NET Core uygulama yayımlama .

.NET Core Barındırma Paketi'ne yükleme

Desteklenen işletim sistemleri

Aşağıdaki işletim sistemleri desteklenmektedir:

  • Windows 7 veya sonraki bir
  • Windows Server 2008 R2 veya sonraki sürümü

HTTP.sys sunucusu (eski adı WebListener) IIS ile ters ara sunucu yapılandırmasında çalışmıyor. sunucusunu Kestrel kullanın.

Azure'da barındırma hakkında bilgi için bkz. ASP.NET Core uygulamalarını Azure App Service dağıtma .

Sorun giderme kılavuzu için ASP.NET Core projelerinde sorun giderme ve hata ayıklama bkz. .

Desteklenen platformlar

32 bit (x86) veya 64 bit (x64) dağıtım için yayımlanan uygulamalar de destekler. 32 bitlik (x86) bir uygulama dağıtın .NET Core SDK uygulama:

  • 64 bit uygulama için daha büyük sanal bellek adres alanı gerektirir.
  • Daha büyük IIS yığın boyutunu gerektirir.
  • 64 bit yerel bağımlılıkları vardır.

64 bit uygulama yayımlamak için 64 bit .NET Core SDK (x64) kullanın. Konak sisteminde 64 bit çalışma zamanı mevcut olmalıdır.

Barındırma modelleri

İşlem içinde barındırma modeli

İşlem içinde barındırmayı kullanan ASP.NET Core, IIS çalışan işlemiyle aynı işlemde çalışır. İşlem içinde barındırma, işlem dışında barındırmaya göre daha iyi performans sağlar çünkü:

  • İstekler geri döngü bağdaştırıcısı üzerinden yükseltilemez. Geri döngü bağdaştırıcısı, giden ağ trafiğini aynı makineye geri döndüren bir ağ arabirimidir.

IIS, işlem yönetimini Windows Etkinleştirme Hizmeti (WAS) ile birlikte ele almaktadır.

ASP.NET Core Modülü:

  • Uygulama başlatmayı gerçekleştirir.
  • IIS yerel isteğinin ömrünü işleme.

İşlem içinde barındırma modeli, uygulamanın hedefini ASP.NET Core uygulamalar için .NET Framework.

Aşağıdaki diyagram iis, ASP.NET Core Modülü ve işlem içinde barındırılan bir uygulama arasındaki ilişkiyi gösterir:

ASP.NET Core İşlem içinde barındırma senaryosunda modül

Web'den çekirdek modu sürücüye bir HTTP.sys gelir. Sürücü, yerel isteği web sitesinin yapılandırılmış bağlantı noktası üzerinden IIS'ye (genellikle 80 (HTTP) veya 443 (HTTPS) yönlendirmektedir. ASP.NET Core Modülü yerel isteği alır ve IIS HTTP Sunucusuna () IISHttpServer iletir. IIS HTTP Sunucusu, IIS için isteği yerelden yönetilene dönüştüren bir işlem sırasında sunucu uygulamasıdır.

IIS HTTP Sunucusu isteği işledikten sonra istek, bir ara yazılım işlem hattına ASP.NET Core isteği gönderir. Ara yazılım işlem hattı isteği işler ve uygulamanın HttpContext mantığına örnek olarak iletir. Uygulamanın yanıtı IIS HTTP Sunucusu üzerinden IIS'ye geri geçirildi. IIS, isteği başlatan istemciye yanıtı gönderir.

İşlem içinde barındırma, mevcut uygulamalar için kullanılır, ancak dotnet yeni şablonları varsayılan olarak tüm IIS ve sanal ağ senaryoları için işlem IIS Express kullanılır.

CreateDefaultBuilderIServer UseIIS CoreCLR'yi ** önyüklemek ve uygulamayı IIS çalışan işleminin içinde barındırmak için yöntemini çağırarak bir örnek ekler (w3wp.exeveya iisexpress.exe). Performans testleri, bir .NET Core uygulamasını işlem içinde barındırmanın, uygulamanın işlem dışı barındırma ve istekleri sunucuya ara sunucuya sunarak karşılaştırıldığında önemli ölçüde daha yüksek istek aktarım hızı sun olduğunu Kestrel gösterir.

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

Uygulama ASP.NET Core IIS çalışan işleminden ayrı bir işlemde çalıştırıla olduğundan, ASP.NET Core Modülü işlem yönetimini ele almaktadır. Modül, ilk istek ASP.NET Core uygulamanın işlemini başlatır ve kapandığında veya kilitleniyorsa uygulamayı yeniden başlatır. Bu temelde, Windows Process Activation Service (WAS) tarafından yönetilen işlem içinde çalıştıran uygulamalarla görülen davranıştır.

Aşağıdaki diyagram iis, ASP.NET Core Modülü ve işlem dışında barındırılan bir uygulama arasındaki ilişkiyi gösterir:

ASP.NET Core İşlem dışında barındırma senaryosunda modül

İstekler web'den çekirdek modu sürücüye HTTP.sys gelir. Sürücü, istekleri web sitesinin yapılandırılmış bağlantı noktası üzerinden IIS'ye (genellikle 80 (HTTP) veya 443 (HTTPS) yönlendirmektedir. Modül, istekleri uygulamanın 80 veya 443 bağlantı noktası olmayan rastgele bir bağlantı noktasına Kestrel iletir.

modülü başlangıçta bir ortam değişkeni aracılığıyla bağlantı noktasını belirtir ve uzantı sunucuyu üzerinde UseIISIntegration dinleyecek şekilde http://localhost:{PORT} yapılandırmaktadır. Ek denetimler gerçekleştirilir ve modülden kaynaklanmazsa istekler reddedilir. Modül HTTPS iletmeyi desteklemez, bu nedenle istekler HTTPS üzerinden IIS tarafından alınsa bile HTTP üzerinden iletiliyor.

Modülden isteği alan istek, bir Kestrel ara yazılım işlem hattına ASP.NET Core olur. Ara yazılım işlem hattı isteği işler ve uygulamanın HttpContext mantığına örnek olarak iletir. IIS Tümleştirmesi tarafından eklenen ara yazılım şemasını, uzak IP'yi ve yol tabanını, isteği adresine ileterek hesaba katacak şekilde Kestrel ler. Uygulamanın yanıtı IIS'ye geri geçirerek isteği başlatan HTTP istemcisine geri iter.

Modül ASP.NET Core kılavuzu için bkz. ASP.NET Core Modülü .

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

Uygulama yapılandırması

IISIntegration bileşenlerini etkinleştirme

CreateWebHostBuilder(Program.cs) içinde bir konak oluşturmada CreateDefaultBuilder IIS tümleştirmeyi etkinleştirmek için çağrısı:

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        ...

hakkında daha fazla bilgi CreateDefaultBuilder için ASP.NET Core Web ana bilgisayarı bkz. .

IIS seçenekleri

İşlem içinde barındırma modeli

IIS Sunucusu seçeneklerini yapılandırmak için, içinde için bir hizmet yapılandırması IISServerOptions dahil. ConfigureServices Aşağıdaki örnek AutomaticAuthentication'ı devre dışı bırakmaktadır:

services.Configure<IISServerOptions>(options => 
{
    options.AutomaticAuthentication = false;
});
Seçenek Varsayılan Ayar
AutomaticAuthentication true ise, true IIS Sunucusu Kimlik Doğrulaması tarafından kimliği HttpContext.User doğrulanan Windows ayarlar. ise, sunucu yalnızca için bir kimlik sağlar ve tarafından false HttpContext.User açıkça istenen güçlüklere yanıt AuthenticationScheme verir. Windows kimlik doğrulamasının çalışması için IIS'de AutomaticAuthentication etkinleştirilmelidir. Daha fazla bilgi için bkz. Windows Doğrulaması.
AuthenticationDisplayName null Oturum açma sayfalarında kullanıcılara gösterilen görünen adı ayarlar.

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

IIS seçeneklerini yapılandırmak için, içinde için bir hizmet yapılandırması IISOptions dahil. ConfigureServices Aşağıdaki örnek, uygulamanın uygulamasını engellemesini HttpContext.Connection.ClientCertificate sağlar:

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

Proxy sunucusu ve yük dengeleyici senaryoları

İletilen Üst Bilgiler Ara Yazılımı'nı yapılandıran IISTümleştirme Ara Yazılımı ve ASP.NET Core Modülü, şemayı (HTTP/HTTPS) ve isteğin kaynaklandığı uzak IP adresini iletacak şekilde yapılandırılır. Ek proxy sunucularının ve yük dengecilerin arkasında barındırılan uygulamalar için ek yapılandırma gerekebilir. Daha fazla bilgi için bkz. ASP.NET Core sunucuları ve yük dengeleri ile çalışacak şekilde yapılandırma.

web.config dosyası

web.config dosyası ASP.NET Core modülünüyapılandırır. web.config dosyası oluşturma, dönüştürme ve yayımlama, proje yayımlandığında bir MSBuild hedefi () tarafından işlenir _TransformWebConfig . Bu hedef, Web SDK hedeflerinde () bulunur Microsoft.NET.Sdk.Web . SDK proje dosyasının en üstünde ayarlanır:

<Project Sdk="Microsoft.NET.Sdk.Web">

projede bir web.config dosyası yoksa, ASP.NET Core modülünü yapılandırmak için doğru işlem yolu ve bağımsız değişkenlerle dosya oluşturulur ve yayımlanan çıktıyataşınır.

projede bir web.config dosyası varsa, dosya doğru processpath ve bağımsız değişkenlerle birlikte dönüştürülür ve ASP.NET Core modülünü yapılandırır ve yayımlanan çıktıya taşınır. Dönüştürme, dosyadaki IIS yapılandırma ayarlarını değiştirmez.

web.config dosyası, etkin IIS modüllerini DENETLEYEN ek IIS yapılandırma ayarları sağlayabilir. ASP.NET Core uygulamalarla istekleri işleyebilen ııs modülleri hakkında daha fazla bilgi için bkz. ııs modules konusu.

Web SDK 'sının web.config dosyasını dönüştürmasını engellemek için, <IsTransformWebConfigDisabled> Proje dosyasındaki özelliğini kullanın:

<PropertyGroup>
  <IsTransformWebConfigDisabled>true</IsTransformWebConfigDisabled>
</PropertyGroup>

Web SDK 'sının dosyayı dönüştürmesiyle devre dışı bırakıldığında, processPath ve bağımsız değişkenler geliştirici tarafından el ile ayarlanmalıdır. Daha fazla bilgi için bkz. ASP.NET Core Modülü.

web.config dosya konumu

ASP.NET Core modülünü doğru bir şekilde ayarlamak için, dağıtılan uygulamanın içerik kök yolunda (genellikle uygulama temel yolu) web.config dosyasının mevcut olması gerekir. Bu, IIS 'ye sunulan Web sitesi fiziksel yoluyla aynı konumdadır. web.config dosyası, Web dağıtımı kullanarak birden çok uygulamanın yayımlanmasını sağlamak için uygulamanın kökünde gereklidir.

Önemli dosyalar uygulamanın fiziksel yolunda bulunur, örneğin <assembly>.runtimeconfig.json, <assembly>.xml (XML belge açıklamaları) ve <assembly>.deps.js. web.config dosyası mevcut olduğunda ve site normal olarak başlatıldığında, istenirse IIS bu hassas dosyaları sunmaz. web.config dosya eksikse, yanlış şekilde adlandırılmış veya site normal başlatma için YAPıLANDıRıMıŞSA IIS hassas dosyalara genel olarak sunabilir.

web.config dosyasının her zaman dağıtımda mevcut olması gerekir, doğru şekilde adlandırılmış ve siteyi normal başlangıç için yapılandırabiliyor. web.config dosyasını bir üretim dağıtımından hiçbir şekilde kaldırmayın.

Web.config’i dönüştürme

Yayımla web.config dönüştürmeniz gerekiyorsa (örneğin, yapılandırma, profil veya ortama göre ortam değişkenlerini ayarlayın), bkz Web.config’i dönüştürme ..

IIS yapılandırması

Windows Sunucu işletim sistemleri

Web sunucusu (IIS) sunucu rolünü etkinleştirin ve rol hizmetleri oluşturun.

  1. Yönet menüsündeki rol ve özellik ekleme sihirbazı ' nı veya Sunucu Yöneticisi bağlantısındaki bağlantıyı kullanın. Sunucu rolleri adımında, Web sunucusu (IIS) kutusunu işaretleyin.

    Sunucu rollerini seçin adımında Web sunucusu IIS rolü seçilidir.

  2. Özellikler adımından sonra, Web sunucusu (IIS) için rol hizmetleri adımı yüklenir. İstenen IIS rol hizmetlerini seçin veya varsayılan rol hizmetlerini kabul edin.

    Rol hizmetlerini seçin adımında varsayılan rol hizmetleri seçilidir.

    Windows Kimlik doğrulaması (Isteğe bağlı)
    Windows kimlik doğrulamasını etkinleştirmek için şu düğümleri genişletin: Web sunucusu > güvenliği. Windows kimlik doğrulaması özelliğini seçin. daha fazla bilgi için bkz. Windows <windowsAuthentication> kimlik doğrulaması ve Windows kimlik doğrulamasını yapılandırma.

    WebSockets (Isteğe bağlı)
    WebSockets ASP.NET Core 1,1 veya üzeri bir sürümde desteklenir. WebSockets 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.

  3. Web sunucusu rolü ve hizmetlerini yüklemek için onay adımına ilerleyin. Web sunucusu (IIS) rolü yüklendikten sonra sunucu/IIS yeniden başlatması gerekli değildir.

masaüstü işletim sistemlerini Windows

IIS Yönetim Konsolu ve World Wide Web hizmetlerini etkinleştirin.

  1. denetim masası > programlar > programlar ve özellikler ' e gidin > Windows özellikleri açın veya kapatın (ekranın sol tarafında).

  2. Internet Information Services düğümünü açın. Web yönetimi araçları düğümünü açın.

  3. IIS Yönetim Konsolu kutusunu işaretleyin.

  4. World Wide Web Hizmetleri kutusunu işaretleyin.

  5. World Wide Web Hizmetleri için varsayılan özellikleri kabul edın veya IIS özelliklerini özelleştirin.

    Windows Kimlik doğrulaması (Isteğe bağlı)
    Windows kimlik doğrulamasını etkinleştirmek için şu düğümleri genişletin: World Wide Web hizmetleri > güvenliği. Windows kimlik doğrulaması özelliğini seçin. daha fazla bilgi için bkz. Windows <windowsAuthentication> kimlik doğrulaması ve Windows kimlik doğrulamasını yapılandırma.

    WebSockets (Isteğe bağlı)
    WebSockets ASP.NET Core 1,1 veya üzeri bir sürümde desteklenir. WebSockets etkinleştirmek için şu düğümleri genişletin: World Wide Web Services > uygulaması geliştirme özellikleri. WebSocket protokolü özelliğini seçin. Daha fazla bilgi için bkz. WebSockets.

  6. IIS yüklemesi için yeniden başlatma gerekiyorsa, sistemi yeniden başlatın.

Windows özelliklerde ııs yönetim konsolu ve World Wide Web hizmetleri seçilidir.

.NET Core barındırma paketi 'ni yükler

.NET Core barındırma paketi 'ni barındırma sistemine yükler. paket, .net core çalışma zamanı, .net core kitaplığı ve ASP.NET Core modülünüde yüklüyor. modül ASP.NET Core uygulamaların ııs 'nin arkasında çalışmasına izin verir.

Önemli

Barındırma paketi IIS 'den önce yüklendiyse, paket yüklemesi onarılması gerekir. IIS yükledikten sonra barındırma paketi yükleyicisini yeniden çalıştırın.

.NET Core 'un 64 bit (x64) sürümünü yükledikten sonra barındırma paketi yüklenirse, SDK 'lar eksik gibi görünebilir (hiçbir .NET Core SDK 'sı algılanmadı). Sorunu çözmek için bkz ASP.NET Core projelerinde sorun giderme ve hata ayıklama ..

İndir

  1. .NET Core 'U indir sayfasına gidin.
  2. İstediğiniz .NET Core sürümünü seçin.
  3. Uygulamaları Çalıştır-çalışma zamanı sütununda, Istenen .NET Core çalışma zamanı sürümünün satırını bulun.
  4. Barındırma paketi bağlantısını kullanarak yükleyiciyi indirin.

Uyarı

Bazı yükleyicilerle yaşam süresi (EOL) gelmiş olan ve artık Microsoft tarafından desteklenmeyen yayın sürümlerini içerir. Daha fazla bilgi için bkz. destek ilkesi.

Barındırma paketini yükler

  1. Yükleyiciyi sunucuda çalıştırın. Aşağıdaki parametreler, yükleyiciyi yönetici komut kabuğu 'ndan çalıştırırken kullanılabilir:

    • OPT_NO_ANCM=1: ASP.NET Core modülünü yüklemeyi atlayın.
    • OPT_NO_RUNTIME=1: .NET Core çalışma zamanını yüklemeyi atlayın. Sunucu yalnızca kendi kendine içerilen dağıtımları (SCD)barındırdığınızda kullanılır.
    • OPT_NO_SHAREDFX=1: ASP.NET paylaşılan çerçevesini (ASP.NET çalışma zamanı) yüklemeyi atlayın. Sunucu yalnızca kendi kendine içerilen dağıtımları (SCD)barındırdığınızda kullanılır.
    • OPT_NO_X86=1: X86 çalışma zamanlarını yüklemeyi atlayın. 32 bitlik uygulamalar barındırmayabildiğinizi bildiğiniz durumlarda bu parametreyi kullanın. Gelecekte 32-bit ve 64 bit uygulamaları barındırabilmeniz gereken herhangi bir şansınız varsa, bu parametreyi kullanmayın ve her iki çalışma zamanını da yüklemeyin.
    • OPT_NO_SHARED_CONFIG_CHECK=1: Paylaşılan yapılandırma (applicationHost.config), IIS yüklemesiyle aynı makinada olduğunda, IIS paylaşılan yapılandırması kullanma denetimini devre dışı bırakın. yalnızca ASP.NET Core 2,2 veya sonraki bir sürümü paketcisi yükleyicilerini barındırmak için kullanılabilir. Daha fazla bilgi için bkz. ASP.NET Core Modülü.
  2. Sistemi yeniden başlatın veya komut kabuğu 'nda aşağıdaki komutları yürütün:

    net stop was /y
    net start w3svc
    

    IIS 'nin yeniden başlatılması, yükleyici tarafından oluşturulan bir ortam değişkeni olan sistem yolunda bir değişiklik seçer.

Barındırma paketini yüklerken IIS 'deki bireysel siteleri el ile durdurmanız gerekli değildir. Barındırılan uygulamalar (IIS siteleri) IIS yeniden başlatıldığında yeniden başlatılır. Uygulamalar, uygulama başlatma modülündenda dahil olmak üzere ilk isteklerini alırken yeniden başlatılır.

ASP.NET Core, paylaşılan çerçeve paketlerinin yama sürümleri için ileri sarma davranışını benimseme. IIS ile IIS tarafından barındırılan uygulamalar IIS ile yeniden başlatıldığında, ilk isteklerini alırken başvurulan paketlerinin en son düzeltme eki sürümleriyle yüklenir. IIS yeniden başlatılırsa, uygulamalar yeniden başlatılır ve çalışan işlemlerine geri dönüştürüldüğünde geri alma davranışını gösterir ve ilk isteklerini alırlar.

Not

ııs paylaşılan yapılandırması hakkında bilgi için bkz. ııs paylaşılan yapılandırması ile ASP.NET Core modülü.

Visual Studio ile yayımlarken Web Dağıtımı yüklemesi

Uygulamaları Web dağıtımıolan sunuculara dağıttığınızda, en son Web dağıtımı sürümünü sunucuya yüklersiniz. Web Dağıtımı yüklemek için Web Platformu Yükleyicisi 'ni (WebPI) kullanın veya doğrudan Microsoft İndirme Merkezi'nden bir yükleyici edinin. Tercih edilen yöntem, WebPI kullanmaktır. WebPI, barındırma sağlayıcıları için tek başına kurulum ve yapılandırma sağlar.

IIS sitesini oluşturma

  1. Barındırma sisteminde, uygulamanın yayımlanan klasörlerini ve dosyalarını içeren 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ı ..

  2. IIS Yöneticisi 'nde, Bağlantılar panelinde sunucunun düğümünü açın. Siteler klasörüne sağ tıklayın. Bağlamsal menüden Web sitesi Ekle ' yi seçin.

  3. Bir site adı belirtin ve fiziksel yolu uygulamanın dağıtım klasörüne ayarlayın. Bağlama yapılandırmasını sağlayın ve Tamam' ı seçerek Web sitesini oluşturun:

    Web sitesi Ekle adımında site adı, fiziksel yol ve ana bilgisayar adını sağlayın.

    Uyarı

    Üst düzey joker karakter bağlamaları ( http://*:80/ ve http://+:80 ) kullanılmamalıdır . Üst düzey joker karakter bağlamaları, uygulamanızı güvenlik açıklarına açabilir. Bu hem güçlü hem de zayıf Joker karakterlere yöneliktir. Joker karakterler yerine açık ana bilgisayar adları kullanın. Alt etki alanı joker bağlantısı (örneğin, *.mysub.com ), tüm üst etki alanını (Bu güvenlik açığı olan aksine) kontrol ediyorsanız bu güvenlik riskine sahip değildir *.com . Daha fazla bilgi için bkz. rfc7230 Section-5,4 .

  4. Sunucu düğümünün altında uygulama havuzları' nı seçin.

  5. sitenin uygulama havuzuna sağ tıklayın ve bağlam menüsünden temel Ayarlar seçin.

  6. Uygulama havuzunu Düzenle penceresinde, .NET CLR sürümünü yönetilen kod olmadan ayarlayın:

    .NET CLR sürümü için yönetilen kod ayarlama.

    ASP.NET Core ayrı bir işlemde çalışır ve çalışma zamanını yönetir. ASP.NET Core, masaüstü clr 'nin (.net clr) yüklenmemesine bağlı değildir — . .net core için çekirdek ortak dil çalışma zamanı (coreclr), uygulamayı çalışan işlemde barındırmak için önyüklenir. .NET CLR sürümünün yönetilen kod olmadan ayarlanması isteğe bağlıdır, ancak önerilir.

  7. ASP.NET Core 2,2 veya üzeri: işlem içi barındırma modelinikullanan 64 bit (x64) tabanlı bir dağıtım için, 32-bit (x86) işlemleri için uygulama havuzunu devre dışı bırakın.

    ııs yöneticisi > uygulama havuzlarının eylemler kenar çubuğunda, uygulama havuzu varsayılanlarını ayarla veya gelişmiş Ayarlar' i seçin. 32 bitlik uygulamaları etkinleştir ' i bulun ve değerini olarak ayarlayın False . Bu ayar , işlem dışı barındırmaiçin dağıtılan uygulamaları etkilemez.

  8. İşlem modeli kimliğinin uygun izinlere sahip olduğunu doğrulayın.

    Uygulama havuzunun varsayılan kimliği (işlem modeli > Identity ) applicationPool Identity 'den 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, uygulamanın dosyaları okuduğu ve yazdığı klasörlere okuma ve yazma erişimi gerektirir.

Windows Kimlik doğrulama yapılandırması (Isteğe bağlı)
daha fazla bilgi için bkz. Windows kimlik doğrulamasını yapılandırma.

Uygulamayı dağıtma

Uygulamayı IIS sitesi oluşturma bölümünde oluşturulan IIS fiziksel yol klasörüne dağıtın. Web dağıtımı dağıtım için önerilen mekanizmadır, ancak uygulamayı projenin Publish klasöründen barındırma sisteminin dağıtım klasörüne taşımak için çeşitli seçenekler mevcuttur.

Visual Studio Web Dağıtımı

Web Dağıtımı ile kullanmak üzere bir yayımlama profili oluşturmayı öğrenmek için ASP.NET Core uygulama dağıtımı için Visual Studio yayımlama profilleri konusuna bakın. barındırma sağlayıcısı, bir yayımlama profili veya oluşturma desteği sağlıyorsa, profillerini indirin ve Visual Studio yayımla iletişim kutusunu kullanarak içeri aktarın:

Yayımla iletişim sayfası

Visual Studio dışında Web Dağıtımı

Web Dağıtımı , komut satırından Visual Studio dışında da kullanılabilir. Daha fazla bilgi için bkz. Web Dağıtım aracı.

Web Dağıtımı alternatifleri

Uygulamayı barındırma sistemine taşımak için el ile kopyalama, xcopy, Robocopyveya PowerShellgibi çeşitli yöntemlerden birini kullanın.

ııs 'ye dağıtım ASP.NET Core hakkında daha fazla bilgi için, ııs yöneticileri için dağıtım kaynakları bölümüne bakın.

Web sitesine gidin

Uygulama barındırma sistemine dağıtıldıktan sonra, uygulamanın genel uç noktalarından birine bir istek oluşturun.

Aşağıdaki örnekte, site bağlantı noktasındaki IIS ana bilgisayar adına bağlıdır www.mysite.com 80 . Bir istek şu şekilde yapılır http://www.mysite.com :

Microsoft Edge tarayıcısı ııs başlangıç sayfasını yükledi.

Kilitli dağıtım dosyaları

Dağıtım klasöründeki dosyalar, uygulama çalışırken kilitlenir. Dağıtım sırasında kilitli dosyaların üzerine yazılamaz. Kilitli dosyaları bir dağıtımda serbest bırakmak için aşağıdaki yaklaşımlardan birini kullanarak uygulama havuzunu durdurun:

  • Proje dosyasında Web Dağıtımı ve başvurusunu kullanın Microsoft.NET.Sdk.Web . Bir app_offline.htm dosyası Web uygulaması dizininin köküne yerleştirilir. dosya mevcut olduğunda, ASP.NET Core modülü uygulamayı düzgün bir şekilde kapatır ve dağıtım sırasında app_offline.htm dosyasına hizmet verir. daha fazla bilgi için ASP.NET Core modülü yapılandırma başvurusunabakın.

  • Sunucu üzerindeki IIS Yöneticisi 'nde uygulama havuzunu el ile durdurun.

  • app_offline.htm bırakmak için PowerShell kullanın (PowerShell 5 veya üzeri gerektirir):

    $pathToApp = 'PATH_TO_APP'
    
    # Stop the AppPool
    New-Item -Path $pathToApp app_offline.htm
    
    # Provide script commands here to deploy the app
    
    # Restart the AppPool
    Remove-Item -Path $pathToApp app_offline.htm
    
    

Veri koruma

ASP.NET Core veri koruma yığını , kimlik doğrulamasında kullanılan ara yazılımlar dahil olmak üzere birkaç ASP.NET Core middlewarestarafından kullanılır. Veri koruma API 'Leri Kullanıcı kodu tarafından çağrılmasa bile, kalıcı bir şifreleme anahtarı deposuoluşturmak için veri koruma bir dağıtım betiği veya Kullanıcı kodu ile yapılandırılmalıdır. Veri koruması yapılandırılmamışsa, anahtarlar bellekte tutulur ve uygulama yeniden başlatıldığında atılır.

Uygulama yeniden başlatıldığında anahtar halkası bellekte depolanıyorsa:

  • Tüm cookie tabanlı kimlik doğrulama belirteçleri geçersiz kılındı.
  • Kullanıcıların bir sonraki isteğinde yeniden oturum açması gerekir.
  • Anahtar halkası ile korunan tüm veriler artık çözülemez. bu, csrf belirteçlerini ve ASP.NET Core MVC tempdata cookie söğesini içerebilir.

Anahtar halkasını sürdürmek için IIS altındaki veri korumasını yapılandırmak için aşağıdaki yaklaşımlardan birini kullanın:

  • Veri koruma kayıt defteri anahtarları oluşturma

    ASP.NET Core uygulamalar tarafından kullanılan veri koruma anahtarları, uygulamaların dış kayıt defterinde saklanı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, web grubu olmayan ııs yüklemeleri için, veri koruma Provision-AutoGenKeys.ps1 PowerShell betiği , bir ASP.NET Core uygulamasıyla kullanılan her uygulama havuzu için kullanılabilir. Bu betik, yalnızca uygulamanın uygulama havuzunun çalışan işlem hesabına erişilebilen HKLM Kayıt defterinde 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 bir UNC yolu kullanacak şekilde yapılandırılabilir. Varsayılan olarak, veri koruma anahtarları şifrelenmez. ağ paylaşımının dosya izinlerinin, uygulamanın çalıştırıldığı Windows hesapla sınırlı olduğundan emin olun. Bir x509 sertifikası, bekleyen anahtarları korumak için kullanılabilir. Kullanıcıların sertifikaları karşıya yüklemesine izin vermek için bir mekanizma düşünün: sertifikaları kullanıcının güvenilen sertifika deposuna yerleştir ve kullanıcının uygulamasının çalıştığı tüm makinelerde kullanılabilir olduklarından emin olun. ayrıntılar için bkz. ASP.NET Core veri korumasını yapılandırma .

  • Kullanıcı profilini yüklemek için IIS uygulama havuzunu yapılandırma

    bu ayar, uygulama havuzunun gelişmiş Ayarlar altındaki işlem modeli bölümünde bulunur. Kullanıcı profilini yükle ' ye ayarlayın True . Olarak ayarlandığında True anahtarlar Kullanıcı profili dizininde depolanır ve Kullanıcı hesabına özgü bir ANAHTARLA DPAPI kullanılarak korunur. anahtarlar, % LOCALAPPDATA%/ASP.NET/dataprotection-keys klasörü için kalıcıdır.

    Uygulama havuzunun Setprofileenvironment özniteliğinin de etkinleştirilmesi gerekir. Varsayılan değeri setProfileEnvironment true . Bazı senaryolarda (örneğin, Windows OS), setProfileEnvironment olarak ayarlanır false . Anahtarlar beklenen şekilde Kullanıcı profili dizininde depolanmıyorsa:

    1. % Windir%/system32/inetsrv/config klasörüne gidin.
    2. applicationHost.config dosyasını açın.
    3. Öğesini bulun <system.applicationHost><applicationPools><applicationPoolDefaults><processModel> .
    4. setProfileEnvironmentÖzniteliğinin mevcut olmadığını, değeri varsayılan olarak değerini, true veya özniteliğin değerini olarak olarak ayarlandığını doğrulayın true .
  • Dosya sistemini anahtar halka deposu olarak kullanma

    Dosya sistemini anahtar halkası deposu olarak kullanmak için uygulama kodunu ayarlayın. Anahtar halkasını korumak ve sertifikanın güvenilir bir sertifika olduğundan emin olmak için bir X509 sertifikası kullanın. Sertifika otomatik olarak imzalandı ise, sertifikayı Güvenilen Kök deposuna yer.

    Bir web grubu içinde IIS kullanırken:

  • Veri koruma için makine genelinde ilke ayarlama

    Veri koruma sistemi, Veri Koruma API'lerini tüketen 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 koruma.

Sanal Dizinler

IIS Sanal Dizinleri, diğer uygulamalarla ASP.NET Core. Bir uygulama bir alt uygulama olarak barındırabilirsiniz.

Alt uygulamalar

Bir ASP.NET Core bir IIS alt uygulaması (alt uygulama) olarak barındırabilirsiniz. Alt uygulamanın yolu, kök uygulamanın URL'sinin bir parçası olur.

Alt uygulama içindeki statik varlık bağlantılarının tilde-slash ( ~/ ) notasyonu kullanması gerekir. Tilde-slash özelliği, alt uygulamanın yol tabanını işlenmiş göreli bağlantıya hazırlamak için bir Etiket Yardımcısı tetikler. uygulamasındaki bir alt uygulama /subapp_path için ile bağlantılı bir görüntü olarak src="~/image.png" src="/subapp_path/image.png" 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.

Statik varlığın özniteliği mutlak yola (örneğin, ) ayarlanırsa, bağlantı alt uygulamanın yol temeli src src="/image.png" olmadan işlenir. Kök uygulamanın Statik Dosya Ara Yazılımı, kök uygulamanın webkökünden varlığın hizmet vermeye çalışır ve bu da statik varlık kök uygulama tarafından kullanılabilir olmadığı sürece 404 - Bulunamadı yanıtıyla sonuç verir.

Bir uygulamayı ASP.NET Core uygulamanın altında alt uygulama olarak barındırmak ASP.NET Core için:

  1. Alt uygulama için bir uygulama havuzu kurma. .NET Core için Çekirdek Ortak Dil Çalışma Zamanı (CoreCLR) masaüstü CLR (.NET CLR) değil, çalışan işlemi içinde uygulamayı barındırmak için önyük olduğundan .NET CLR Sürümünü Yönetilen Kod Yok olarak ayarlayın.

  2. Iis Yöneticisi'nde kök siteyi, alt uygulamayla kök sitenin altındaki bir klasöre ekleyin.

  3. IIS Yöneticisi'nde alt uygulama klasörüne sağ tıklayın ve Uygulamaya Dönüştür'e tıklayın.

  4. Uygulama Ekle iletişim kutusunda, alt uygulama için oluşturduğunuz uygulama havuzunu atamak üzere Uygulama Havuzu için Seç düğmesini kullanın. Tamam’ı seçin.

İşlem içinde barındırma modelini kullanırken alt uygulamaya ayrı bir uygulama havuzu ataması bir gereksinimdir.

İşlem sırasında barındırma modeli ve uygulama modülü yapılandırma hakkında daha fazla bilgi ASP.NET Core bkz. ASP.NET Core Modülü .

web.config ile IIS yapılandırması

IIS yapılandırması, ASP.NET Core Modülü ileweb.configuygulamalar için işlevsel <system.webServer> iis senaryoları için ASP.NET Core senaryolarının ASP.NET Core etkilemektedir. Örneğin, IIS yapılandırması dinamik sıkıştırma için işlevseldir. IIS, sunucu düzeyinde dinamik sıkıştırma kullanmak üzere yapılandırılmışsa, uygulamanınweb.configdosyasındaki öğe, uygulamanın ASP.NET Core <urlCompression> devre dışı bırakabilirsiniz.

Daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın:

Yalıtılmış uygulama havuzlarında (IIS 10.0 veya sonraki bir için desteklenen) çalışan tek tek uygulamalar için ortam değişkenlerini ayarlamak için IIS başvuru belgelerinde Ortam Değişkenleri konusununAppCmd.exe komutu <environmentVariables> bölümüne bakın.

ASP.NET Core tarafından ASP.NET Core

ASP.NET 4.x uygulamalarının web.config bölümleri, ASP.NET Core uygulamalar tarafından yapılandırma için kullanılmaz:

  • <system.web>
  • <appSettings>
  • <connectionStrings>
  • <location>

ASP.NET Core diğer yapılandırma sağlayıcıları kullanılarak yapılandırılır. Daha fazla bilgi için bkz. Yapılandırma.

Uygulama Havuzları

Uygulama havuzu yalıtımı barındırma modeli tarafından belirlenir:

  • İşlem içinde barındırma: Uygulamaların ayrı uygulama havuzlarında çalışması gerekir.
  • İşlem dışında barındırma: Her uygulamayı kendi uygulama havuzunda çalıştırarak uygulamaları diğer uygulamalardan yalıtmanızı öneririz.

IIS Web Sitesi Ekle iletişim kutusu varsayılan olarak uygulama başına tek bir uygulama havuzu olarak kullanılır. Bir Site adı sağlanıyorsa, metin otomatik olarak Uygulama havuzu metin kutusuna aktarılır. Site ekleniyorken 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 sağlar. IIS 8.0 veya sonraki bir üzerinde, IIS Yönetici Çalışan süreci (WAS) yeni uygulama havuzunun adıyla bir sanal hesap oluşturur ve uygulama havuzunun çalışan işlemlerini varsayılan olarak bu hesap altında çalıştırır. Uygulama havuzu için Gelişmiş Yönetim Ayarlar IIS Yönetim Konsolu'da, uygulamasının Identity ApplicationPool kullanmak üzere ayarlanmış olduğundan emin olun: Identity

Uygulama havuzu gelişmiş ayarlar iletişim kutusu

IIS yönetim işlemi, Windows Güvenliği System'de uygulama havuzunun adıyla güvenli Windows Güvenliği oluşturur. Bu kimlik kullanılarak kaynakların güvenliği sağlandı. Ancak, bu kimlik gerçek bir kullanıcı hesabı değildir ve Kullanıcı Yönetim Konsolu'Windows'da göster değildir.

IIS çalışan işlemi uygulamaya yükseltilmiş erişim gerektiriyorsa, uygulamayı içeren dizin için Access Control Listesi'ni (ACL) değiştirebilirsiniz:

  1. Windows Gezgini'ni açın ve dizinine gidin.

  2. Dizine sağ tıklayın ve Özellikler'i seçin.

  3. Güvenlik sekmesinin altında Düzenle düğmesini ve ardından Ekle düğmesini seçin.

  4. Konumlar düğmesini seçin ve sistemin seçili olduğundan emin olun.

  5. Seçilen nesne \ adlarını<app_pool_name> alanına IIS AppPool girişlerini girin. Adları Kontrol Edin düğmesini seçin. DefaultAppPool için IIS AppPool\DefaultAppPool kullanarak adları kontrol edin. Adları Kontrol Edin düğmesi seçildiğinde, nesne adları alanında DefaultAppPool değeri belirtilmiştir. Uygulama havuzu adını doğrudan nesne adları alanına girmek mümkün değildir. Nesne adını kontrol \<app_pool_name>IIS AppPool dosya biçimini kullanın.

    Uygulama klasörü için kullanıcıları veya grupları seçin iletişim kutusu: "Adları Denetleme" seçmeden önce nesne adları alanında "DefaultAppPool" uygulama havuzu adı "IIS AppPool" bölümüne " eklenir.

  6. Tamam’ı seçin.

    Uygulama klasörü için kullanıcıları veya grupları seçin iletişim kutusu: "Adları Denetleme" seçeneğinin ardından nesne adları alanında "DefaultAppPool" nesne adı gösterilir.

  7. Okuma & yürütme izinleri varsayılan olarak ver gerekir. Gerektiğinde ek izinler sağlama.

Erişim, ICACLS aracı kullanılarak bir komut isteminde de verebilirsiniz. Örnek olarak DefaultAppPool kullanılarak aşağıdaki komut kullanılır:

ICACLS C:\sites\MyWebApp /grant "IIS AppPool\DefaultAppPool":F

Daha fazla bilgi için icacls konu başlığına bakın.

HTTP/2 desteği

HTTP/2, aşağıdaki IIS ASP.NET Core senaryolarında aşağıdakilerle birlikte de kullanılabilir:

  • İşlem içinde
    • Windows Server 2016/Windows 10 veya sonrası; IIS 10 veya sonraki bir
    • TLS 1.2 veya sonraki bir bağlantı
  • İşlem dışında
    • Windows Server 2016/Windows 10 veya sonrası; IIS 10 veya sonraki bir
    • Genele yönelik uç sunucu bağlantıları HTTP/2 kullanır, Kestrel ancak sunucuya yönelik ters ara sunucu bağlantısı HTTP/1.1 kullanır.
    • TLS 1.2 veya sonraki bir bağlantı

HttpRequest.Protocol, bir HTTP/2 bağlantısı edatken işlem sırasında dağıtım için HTTP/2 raporlar. HttpRequest.Protocol, bir HTTP/2 bağlantısı edatken işlem dışında dağıtım için HTTP/1.1 raporlar.

İşlem içinde ve işlem dışında barındırma modelleri hakkında daha fazla bilgi için bkz. ASP.NET Core Modülü .

HTTP/2 varsayılan olarak etkindir. Http/2 bağlantısı kurulmamışsa bağlantılar HTTP/1.1'e geri döner. IIS dağıtımları ile HTTP/2 yapılandırması hakkında daha fazla bilgi için bkz. IIS üzerinde HTTP/2.

CORS kontrol öncesi istekleri

Bu bölüm yalnızca ASP.NET Core hedeflenen uygulamalar için .NET Framework.

Bu ASP.NET Core hedef alan bir .NET Framework SEÇENEKLER istekleri IIS'de varsayılan olarak uygulamaya geçir geçiri değildir. OPTIONS isteklerinin geçişini yapmak içinweb.config'da uygulamanın IIS işleyicilerini yapılandırma hakkında bilgi edinmek için bkz. ASP.NET Web API 2'deçıkış noktası 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ıklarında:

  • Uygulama Başlatma Modülü:Uygulamanın barındırılan işlem içinde veya işlem dışında olması, çalışan işleminin yeniden başlatılması veya sunucunun yeniden başlatılması sırasında otomatik olarak başlatılacak şekilde yalıtılır.
  • Boşta Kalma ZamanAşımı: Uygulamanın işlem içinde barındırılan işlemleri, işlem dışı dönemlerde zaman aşımına neden olmayacak şekilde yalıtılmamaktadır.

Uygulama başlatma modülü

İşlem içi ve işlem dışı barındırılan uygulamalar için geçerlidir.

IIS uygulaması 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, uygulamayı başlatmak üzere tetikler. Varsayılan olarak IIS, uygulamayı başlatmak için uygulamanın kök URL 'SI () için bir istek yayınlar / (yapılandırma hakkında daha fazla bilgi için ek kaynaklara bakın).

IIS uygulama başlatma rolü özelliğinin etkin olduğunu doğrulayın:

ııs 'yi yerel olarak kullanırken Windows 7 veya üzeri masaüstü sistemlerinde:

  1. denetim masası > programlar > programlar ve özellikler ' e gidin > Windows özellikleri açın veya kapatın (ekranın sol tarafında).
  2. Internet Information Services > World Wide Web Services > uygulama geliştirme özelliklerini açın.
  3. Uygulama başlatma onay kutusunu seçin.

Windows Server 2008 R2 veya üzeri bir sürümde:

  1. Rol ve Özellik Ekleme Sihirbazı 'nı açın.
  2. Rol hizmetlerini Seç panelinde, uygulama geliştirme düğümünü açın.
  3. Uygulama başlatma onay kutusunu seçin.

Site için uygulama başlatma modülünü etkinleştirmek üzere aşağıdaki yaklaşımlardan birini kullanın:

  • IIS Yöneticisi 'Ni kullanma:

    1. Bağlantılar panelinde uygulama havuzları ' nı seçin.
    2. listedeki uygulamanın uygulama havuzuna sağ tıklayın ve gelişmiş Ayarlar' yi seçin.
    3. Varsayılan Başlangıç modu OnDemand' dir. Başlangıç modunu AlwaysRunning olarak ayarlayın. Tamam’ı seçin.
    4. Bağlantılar panelinde siteler düğümünü açın.
    5. uygulamaya sağ tıklayın ve web sitesi > gelişmiş Ayarlar yönet ' i seçin.
    6. Varsayılan önyükleme etkin ayarı false şeklindedir. Önyükleme etkin ' i true olarak ayarlayın. Tamam’ı seçin.
  • web.config kullanarak, <applicationInitialization> öğesini doAppInitAfterRestart true <system.webServer> uygulamasının web.config dosyasındaki öğelerine ayarlı olarak ekleyin:

    <?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 sırasında barındırılan uygulamalar için geçerlidir.

Uygulamanın çalışmasını engellemek için, IIS Yöneticisi 'Ni kullanarak uygulama havuzunun boşta kalma zaman aşımını ayarlayın:

  1. Bağlantılar panelinde uygulama havuzları ' nı seçin.
  2. listedeki uygulamanın uygulama havuzuna sağ tıklayın ve gelişmiş Ayarlar' yi seçin.
  3. Varsayılan boşta kalma süresi (dakika) 20 dakikadır. Boşta kalma zaman aşımını (dakika) 0 (sıfır) olarak ayarlayın. Tamam’ı seçin.
  4. Çalışan işlemini geri dönüştür.

İşlem dışı barındırılan uygulamaların zaman aşımına uğramasını engellemek için aşağıdaki yaklaşımlardan birini kullanın:

Uygulama başlatma modülü ve boşta kalma zaman aşımı ek kaynakları

IIS yöneticileri için dağıtım kaynakları

Ek kaynaklar

ASP.NET Core uygulamasını bir ııs sunucusuna yayımlamaya yönelik bir öğretici deneyimi için, bkz IIS'ASP.NET Core uygulama yayımlama ..

.NET Core barındırma paketi 'ni yükler

Desteklenen işletim sistemleri

Aşağıdaki işletim sistemleri desteklenmektedir:

  • Windows 7 veya üzeri
  • Windows Server 2008 R2 veya sonraki sürümü

HTTP.sys sunucusu (eskiden webListener olarak adlandırılır), IIS ile ters proxy yapılandırmasında çalışmaz. Kestrel Sunucusunukullanın.

Azure 'da barındırma hakkında daha fazla bilgi için bkz ASP.NET Core uygulamalarını Azure App Service dağıtma ..

Sorun giderme kılavuzu için bkz ASP.NET Core projelerinde sorun giderme ve hata ayıklama ..

Desteklenen platformlar

32-bit (x86) veya 64 bit (x64) dağıtımı için yayımlanan uygulamalar desteklenir. Uygulama dışında 32 bitlik bir uygulamayı 32 bit (x86) .NET Core SDK dağıtma:

  • 64 bitlik bir uygulama için kullanılabilir daha büyük sanal bellek adres alanını gerektirir.
  • Daha büyük IIS yığın boyutunu gerektirir.
  • 64 bitlik yerel bağımlılıklara sahiptir.

64 bit uygulama yayımlamak için 64 bit (x64) .NET Core SDK kullanın. Ana bilgisayar sisteminde 64 bit çalışma zamanı bulunmalıdır.

ASP.NET Core, varsayılan, platformlar arası bir HTTP sunucusu olan Kestrel sunucuile birlikte gönderilir.

ııs veya IIS Expresskullanırken, uygulama ııs çalışan işleminden (işlem dışı) Kestrel sunucuile ayrı bir işlemde çalışır.

ASP.NET Core uygulamalar ııs çalışan işleminden ayrı bir işlemde çalıştığından, modül işlem yönetimini işler. modül, ilk istek ulaştığında ASP.NET Core uygulama için işlemi başlatır ve kapanırsa veya kilitlenirse uygulamayı yeniden başlatır. bu, temel olarak Windows işlem etkinleştirme hizmeti (WAS)tarafından yönetilen işlem içi uygulamalarla birlikte görülen davranışdır.

aşağıdaki diyagramda ııs, ASP.NET Core modülü ve işlem dışı barındırılan bir uygulama arasındaki ilişki gösterilmektedir:

ASP.NET Core Modülü

İstekler Web 'den çekirdek modu HTTP.sys sürücüsüne ulaşır. Sürücü, istekleri Web sitesinin yapılandırılmış bağlantı noktasında IIS 'ye yönlendirir, genellikle 80 (HTTP) veya 443 (HTTPS). Modül, Kestrel bağlantı noktası 80 veya 443 olmayan uygulamalar için istekleri rastgele bir bağlantı noktası üzerine iletir.

Modül, başlangıç sırasında bir ortam değişkeni aracılığıyla bağlantı noktasını belirtir ve IIS tümleştirme ara yazılımı sunucuyu dinleyecek şekilde yapılandırır http://localhost:{port} . Ek denetimler gerçekleştirilir ve modülünden kaynaklanmayan istekler reddedilir. Modül HTTPS iletmeyi desteklemez, bu nedenle istekler HTTPS üzerinden IIS tarafından alınsa bile HTTP üzerinden iletilir.

Kestrelisteği modülden aldıktan sonra, istek ASP.NET Core ara yazılım ardışık düzenine gönderilir. Ara yazılım ardışık düzeni isteği işler ve HttpContext uygulamanın mantığına bir örnek olarak geçirir. IIS tümleştirmesi tarafından eklenen ara yazılımlar, isteği iletmek için, düzen, uzak IP ve pathbase 'i hesaba göre güncelleştirir Kestrel . Uygulamanın yanıtı IIS 'e geri geçirilir ve bu, isteği başlatan HTTP istemcisine geri gönderilir.

CreateDefaultBuilderKestrelsunucuyu web sunucusu olarak yapılandırır ve ASP.NET Core modülüiçin temel yolu ve bağlantı noktasını yapılandırarak ııs tümleştirmesini sunar.

ASP.NET Core modülü, arka uç işlemine atanacak dinamik bir bağlantı noktası oluşturur. CreateDefaultBuilder yöntemini çağırır UseIISIntegration . UseIISIntegrationKestrel, localhost IP adresinde () dinamik bağlantı noktasını dinleyecek şekilde yapılandırır 127.0.0.1 . Dinamik bağlantı noktası 1234 ise, ' ı Kestrel dinler 127.0.0.1:1234 . Bu yapılandırma tarafından belirtilen diğer URL yapılandırmalarının yerini alır:

UseUrlsModül kullanılırken veya API 'sine yapılan çağrılar Kestrel Listen gerekli değildir. UseUrlsVeya Listen çağrılırsa, Kestrel uygulamayı IIS olmadan çalıştırırken belirtilen bağlantı noktasını dinler.

ASP.NET Core modülü yapılandırma kılavuzu için bkz ASP.NET Core Modülü ..

Barındırma hakkında daha fazla bilgi için bkz. ASP.NET Core ana bilgisayar.

Uygulama yapılandırması

Iısıntegration bileşenlerini etkinleştirin

CreateWebHostBuilder(Program.cs) içinde bir konak oluşturmada CreateDefaultBuilder IIS tümleştirmeyi etkinleştirmek için çağrısı:

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        ...

hakkında daha fazla bilgi CreateDefaultBuilder için ASP.NET Core Web ana bilgisayarı bkz. .

IIS seçenekleri

Seçenek Varsayılan Ayar
AutomaticAuthentication true ise, true IIS Sunucusu Kimlik Doğrulaması tarafından kimliği HttpContext.User doğrulanan Windows ayarlar. ise, sunucu yalnızca için bir kimlik sağlar ve tarafından false HttpContext.User açıkça istenen güçlüklere yanıt AuthenticationScheme verir. Windows kimlik doğrulamasının çalışması için IIS'de AutomaticAuthentication etkinleştirilmelidir. Daha fazla bilgi için bkz. Windows Doğrulaması.
AuthenticationDisplayName null Oturum açma sayfalarında kullanıcılara gösterilen görünen adı ayarlar.

IIS seçeneklerini yapılandırmak için, içinde için bir hizmet yapılandırması IISOptions dahil. ConfigureServices Aşağıdaki örnek, uygulamanın uygulamasını engellemesini HttpContext.Connection.ClientCertificate sağlar:

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

Proxy sunucusu ve yük dengeleyici senaryoları

İletilen Üst Bilgiler Ara Yazılımı'nı yapılandıran IISTümleştirme Ara Yazılımı ve ASP.NET Core Modülü, şemayı (HTTP/HTTPS) ve isteğin kaynaklandığı uzak IP adresini iletacak şekilde yapılandırılır. Ek proxy sunucularının ve yük dengecilerin arkasında barındırılan uygulamalar için ek yapılandırma gerekebilir. Daha fazla bilgi için bkz. ASP.NET Core sunucuları ve yük dengeleri ile çalışacak şekilde yapılandırma.

web.config dosyası

web.config dosyası, modülünü ASP.NET Core yapılandırır. web.configdosyası oluşturma, dönüştürme ve yayımlama, proje yayımlanırken MSBuild hedefi ( _TransformWebConfig ) tarafından işlanır. Bu hedef, Web SDK hedeflerine () Microsoft.NET.Sdk.Web mevcuttur. SDK, proje dosyasının en üstünde ayarlanır:

<Project Sdk="Microsoft.NET.Sdk.Web">

Projede web.config bir dosya yoksa, ASP.NET Core Modülünü yapılandırmak için doğru processPath ve bağımsız değişkenlerle dosya oluşturulur ve yayımlanan çıktıya taşınır.

Projede web.config bir dosya varsa, dosya, ASP.NET Core Modülünü yapılandırmak için doğru processPath ve bağımsız değişkenlerle dönüştürüldür ve yayımlanan çıkışa taşınır. Dönüştürme, dosyada IIS yapılandırma ayarlarını değiştirmez.

Bu web.config, etkin IIS modüllerini kontrol etmek için ek IIS yapılandırma ayarları sağlar. ASP.NET Core uygulamalarıyla istekleri işleyebilecek IIS modülleri hakkında bilgi ASP.NET Core IIS modülleri konu başlığına bakın.

Web SDK'sınıweb.config önlemek için proje <IsTransformWebConfigDisabled> dosyasındaki özelliğini kullanın:

<PropertyGroup>
  <IsTransformWebConfigDisabled>true</IsTransformWebConfigDisabled>
</PropertyGroup>

Web SDK'sı dosyayı dönüştürmeden devre dışı bırakılabilirken, processPath ve bağımsız değişkenler geliştirici tarafından el ile ayarlanmıştır. Daha fazla bilgi için bkz. ASP.NET Core Modülü.

web.config konumu

ASP.NET Core Modülünü doğru ayarlamak için web.config dosyasının dağıtılan uygulamanın içerik kök yolunda (genellikle uygulama temel yolu) mevcut olması gerekir. Bu, IIS'ye sağlanan web sitesi fiziksel yolu ile aynı konumdur. Uygulamanın web.config dosya, uygulamanın kökünde, birden çok uygulamanın tek bir uygulama kullanılarak yayım Web Dağıtımı.

Hassas dosyalar uygulamanın fiziksel yolunda (örneğin, üzerinde <assembly>.runtimeconfig.js),.xml <assembly> (XML Belgeleri yorumları) <assembly> ve üzerinde.deps.jsvardır. web.config dosyası mevcut olduğunda ve site normal olarak başlatıldığında, istense IIS bu hassas dosyaları sunamaz. İş web.config eksikse, yanlış adlandırılmışsa veya siteyi normal başlatma için yapılandıramazsanız, IIS hassas dosyaları herkese açık şekilde hizmet ediyor olabilir.

web.config dosyası dağıtımda her zaman, doğru şekilde adlandırılmış ve siteyi normal başlatma için yapılandırabilecek şekilde mevcut olması gerekir. Üretim dağıtımındanweb.config dosyasını hiçbir zaman kaldırmayın.

Web.config’i dönüştürme

Yayımlamada bir web.config dönüştürmeye ihtiyacınız varsa (örneğin, yapılandırma, profil veya ortama göre ortam değişkenlerini ayarlayın), Web.config’i dönüştürme bkz. .

IIS yapılandırması

Windows Sunucu işletim sistemleri

Web Sunucusu (IIS) sunucu rolünü etkinleştirin ve rol hizmetleri oluşturma.

  1. Yönet menüsündeki Rol ve Özellik Ekleme sihirbazını veya Sunucu Yöneticisi. Sunucu Rolleri adımını, Web Sunucusu (IIS) kutusunu işaretleyin.

    Web Sunucusu IIS rolü Sunucu rollerini seçin adımını seçin.

  2. Özellikler adımdan sonra, Rol hizmetleri adımı Web Sunucusu (IIS) için yüklenir. İstenen IIS rol hizmetlerini seçin veya sağlanan varsayılan rol hizmetlerini kabul et.

    Varsayılan rol hizmetleri Rol hizmetlerini seçin adımsında seçilir.

    Windows Kimlik Doğrulaması (İsteğe bağlı)
    Kimlik Doğrulaması Windows etkinleştirmek için şu düğümleri genişletin: Web Sunucusu > Güvenliği. Kimlik Doğrulaması Windows seçin. Daha fazla bilgi için bkz. Windows Kimlik <windowsAuthentication> Doğrulaması ve Yapılandırma Windows doğrulaması.

    WebSockets (İsteğe Bağlı)
    WebSockets, 1.1 veya ASP.NET Core ile birlikte de desteklene. 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.

  3. Web sunucusu rolünü ve hizmetlerini yüklemek için Onay adımına geçin. Web Sunucusu (IIS) rolünü yükledikten sonra sunucu/IIS yeniden başlatması gerekmez.

Windows masaüstü işletim sistemleri

IIS Yönetim Konsolu'nu ve World Wide Web Hizmetleri'ni etkinleştirin.

  1. Program programları Denetim Masası > > Özellikler'e gidin Windows açık veya > kapalı (ekranın sol tarafında).

  2. Internet Information Services açın. Web Yönetim Araçları düğümünü açın.

  3. IIS Yönetim Konsolu kutusunu işaretleyin.

  4. World Wide Web Services kutusunu işaretleyin.

  5. World Wide Web Services için varsayılan özellikleri kabul etme veya IIS özelliklerini özelleştirme.

    Windows Kimlik Doğrulaması (İsteğe bağlı)
    Kimlik Doğrulaması Windows etkinleştirmek için şu düğümleri genişletin: World Wide Web Hizmetleri > Güvenliği. Kimlik Doğrulaması Windows seçin. Daha fazla bilgi için bkz. Windows Kimlik <windowsAuthentication> Doğrulaması ve Yapılandırma Windows doğrulaması.

    WebSockets (İsteğe Bağlı)
    WebSockets, 1.1 veya ASP.NET Core ile birlikte de desteklene. 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.

  6. IIS yüklemesi yeniden başlatma gerektiriyorsa sistemi yeniden başlatın.

IIS Yönetim Konsolu ve World Wide Web Hizmetleri, Windows Özellikleri'Windows seçilir.

.NET Core Barındırma Paketi'ne yükleme

.NET Core Barındırma Paketi'nin barındırma sistemine yükleyin. Paketi .NET Core Çalışma Zamanı, .NET Core Kitaplığı ve ASP.NET Core Modülü'ASP.NET Core yüklenir. Modül, uygulama ASP.NET Core IIS'nin arkasında çalışmasına olanak sağlar.

Önemli

Barındırma Paketi IIS'den önce yüklendiyse, paket yüklemesi onarılması gerekir. IIS'yi yükledikten sonra Barındırma Paketi yükleyicisini yeniden çalıştırın.

.NET Core'un 64 bit (x64) sürümü yüklendikten sonra Barındırma Paketi yüklenirse, SDK'lar eksik gibi görünebilir (.NET Core SDK algılanmadı). Sorunu çözmek için ASP.NET Core projelerinde sorun giderme ve hata ayıklama bkz. .

İndir

  1. .NET Core İndir sayfasına gidin.
  2. İstediğiniz .NET Core sürümünü seçin.
  3. Uygulamaları çalıştır - Çalışma zamanı sütununda, istenen .NET Core çalışma zamanı sürümünün satırına tıklayın.
  4. Barındırma Paketi bağlantısını kullanarak yükleyiciyi indirin.

Uyarı

Bazı yükleyiciler, yaşam sürelerine (EOL) ulaşmış olan ve artık Microsoft tarafından desteklenen sürümler içerir. Daha fazla bilgi için destek ilkesine bakın.

Barındırma Paketi'ne yükleme

  1. Yükleyiciyi sunucuda çalıştırın. Yükleyiciyi bir yönetici komut kabuğundan çalıştırarak aşağıdaki parametreler kullanılabilir:

    • OPT_NO_ANCM=1: ASP.NET Core Modülünü yüklemeyi atla.
    • OPT_NO_RUNTIME=1: .NET Core çalışma zamanının yüklemesini atla. Sunucu yalnızca kendi içinde dağıtımları (SCD) barındırıyor olduğunda kullanılır.
    • OPT_NO_SHAREDFX=1: ASP.NET Paylaşılan Çerçeve'yi (ASP.NET çalışma zamanı) yüklemeyi atla. Sunucu yalnızca kendi içinde dağıtımları (SCD) barındırıyor olduğunda kullanılır.
    • OPT_NO_X86=1: x86 çalışma zamanlarını yüklemeyi atla. 32 bit uygulamaları barındırmaycanız biliyorken bu parametreyi kullanın. Gelecekte hem 32 bit hem de 64 bit uygulamaları barındırma ihtimaliniz varsa, bu parametreyi kullanmanın ve her iki çalışma zamanının da yüklemesini yapma.
    • OPT_NO_SHARED_CONFIG_CHECK=1: Paylaşılan yapılandırma ( applicationHost.config) IIS yüklemesi ile aynı makinede olduğunda IIS Paylaşılan Yapılandırması kullanma denetimi devre dışı bırakılıyor. Yalnızca 2.2 veya ASP.NET Core Barındırma PaketLeyicisi yükleyicileri için kullanılabilir. Daha fazla bilgi için bkz. ASP.NET Core Modülü.
  2. Sistemi yeniden başlatın veya komut kabuğunda aşağıdaki komutları yürütün:

    net stop was /y
    net start w3svc
    

    IIS'nin yeniden başlatılması, yükleyici tarafından yapılan bir ortam değişkeni olan sistem PATH'inde bir değişiklik alır.

Barındırma Paketi'ni yüklerken IIS'de tek tek siteleri el ile durdurmak gerekli değildir. IIS yeniden başlatıldığında barındırılan uygulamalar (IIS siteleri) yeniden başlatılır. Uygulama Başlatma Modülü de dahil olmak üzere ilk isteklerini alan uygulamalar yeniden başlar.

ASP.NET Core paylaşılan çerçeve paketlerinin düzeltme eki sürümü için ileri sarma davranışını benimser. IIS tarafından barındırılan uygulamalar IIS ile yeniden başlatıldığında, uygulamalar ilk isteklerini yaptıklarında başvurulan paketlerin en son düzeltme eki yayınlarıyla birlikte yük biner. IIS yeniden başlatılmazsa, uygulamalar yeniden başlatılır ve çalışan işlemleri geri dönüştürülen ve ilk isteklerini alan ileri sarma davranışı sergiler.

Not

IIS Paylaşılan Yapılandırması hakkında bilgi için bkz. ASP.NET CORE Iis Paylaşılan Yapılandırması ile Modül.

Web Dağıtımı ile yayımlarken yükleme Visual Studio

uygulamaları, Web Dağıtımı ile sunucularadağıtırken, sunucuya en Web Dağıtımı sürümünü yükleyin. Bir Web Dağıtımı yüklemek için Web Platformu Yükleyicisi'yi (WebPI) kullanın veya doğrudan Microsoft İndirme Merkezi'nden bir yükleyici alın. Tercih edilen yöntem WebPI kullanmaktir. WebPI, barındırma sağlayıcıları için tek başına kurulum ve yapılandırma sunar.

IIS sitesini oluşturma

  1. Barındırma sisteminde, uygulamanın yayımlanan klasör ve dosyalarını içeren bir klasör oluşturun. Aşağıdaki bir adımda, klasörün yolu uygulamanın fiziksel yolu olarak IIS'ye sağlanır. Bir 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ı .

  2. 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.

  3. Bir Site adı girin ve Fiziksel yolu uygulamanın dağıtım klasörüne ayarlayın. Bağlama yapılandırmasını sağlama ve Tamam'ı seçerek web sitesini oluşturma:

    Web Sitesi Ekle adımını Site adı, fiziksel yol ve Ana bilgisayar adı olarak girin.

    Uyarı

    Üst düzey joker karakter bağlamaları ( http://*:80/ http://+:80 ve ) kullanılmamalı. Üst düzey joker karakter bağlamaları, güvenlik açıklarına karşı uygulamanıza açabilirsiniz. Bu hem güçlü hem de zayıf joker karakterler için geçerlidir. Joker karakter yerine açık konak adları kullanın. Alt etki alanı joker karakter bağlaması (örneğin, ) üst etki alanının tamamını (güvenlik açığı olan yerine) denetim altına alırsanız bu güvenlik *.mysub.com *.com riski yoktur. Daha fazla bilgi için bkz. rfc7230 section-5.4.

  4. Sunucunun düğümü altında Uygulama Havuzları'ı seçin.

  5. Sitenin uygulama havuzuna sağ tıklayın ve bağlam menüsünden Temel Ayarlar'ı seçin.

  6. Uygulama Havuzunu Düzenle penceresinde .NET CLR sürümünü Yönetilen Kod Yok olarak ayarlayın:

    .NET CLR sürümü için Yönetilen Kod Yok'a ayarlayın.

    ASP.NET Core ayrı bir işlemde çalışır ve çalışma zamanlarını yönetir. ASP.NET Core, masaüstü CLR'sini (.NET CLR) yüklemeye güvenmez. Uygulamayı çalışan işlemde barındırmak için .NET Core için Çekirdek Ortak Dil Çalışma Zamanı — (CoreCLR) önyükleniyor. .NET CLR sürümünü Yönetilen Kod Yok olarak ayarlama isteğe bağlıdır ancak önerilir.

  7. ASP.NET Core 2.2 veya sonraki bir: İşlem içinde barındırma modelini kullanan 64 bit (x64) kendi içinde dağıtım için,32 bit (x86) işlemler için uygulama havuzunu devre dışı bırakma.

    IIS Yöneticisi'nin Eylemler kenar >, Uygulama Havuzu Varsayılanlarını Ayarla'Ayarlar. 32 Bit Uygulamaları Etkinleştir'i bulun ve değerini olarak False ayarlayın. Bu ayar, işlem dışı barındırma için dağıtılan uygulamaları etkilemez.

  8. İşlem modeli kimliğinin uygun izinlere sahip olduğunu onaylayın.

    Uygulama havuzunun varsayılan kimliği ( İşlem Modeli > Identity ) Identity ApplicationPool'dan 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, uygulamanın dosyaları okuduğu ve yazdığı klasörlere okuma ve yazma erişimi gerektirir.

Windows Kimlik doğrulama yapılandırması (İsteğe bağlı)
Daha fazla bilgi için bkz. Kimlik Windows yapılandırma.

Uygulamayı dağıtma

Uygulamayı, IIS sitesi oluşturma bölümünde kurulan IIS Fiziksel yol klasörüne dağıtın. Web Dağıtımı dağıtım için önerilen mekanizmadır, ancak uygulamayı projenin yayımlama klasöründen barındırma sisteminin dağıtım klasörüne taşımaya için çeşitli seçenekler vardır.

Web Dağıtımı ile Visual Studio

Uygulama Visual Studio için yayımlama profili oluşturma ASP.NET Core yayımlama profili oluşturma hakkında bilgi edinmek için Web Dağıtımı. Barındırma sağlayıcısı bir Yayımlama Profili veya oluşturma desteği sağlarsa, profillerini indirin ve Yayımla iletişim kutusunu Visual Studio içeri aktarın:

Yayımla iletişim kutusu sayfası

Web Dağıtımı dışında Visual Studio

Web Dağıtımı komut satırına Visual Studio dışında da kullanılabilir. Daha fazla bilgi için bkz. Web Dağıtım Aracı.

Web Dağıtımı

Uygulamayı barındırma sistemine taşımak için el ile kopyalama, Xcopy, Robocopyveya PowerShell gibi çeşitli yöntemlerden birini kullanın.

IIS'ye dağıtım ASP.NET Core daha fazla bilgi için IIS yöneticileri için dağıtım kaynakları bölümüne bakın.

Web sitesine göz atma

Uygulama barındırma sistemine dağıtıldıktan sonra, uygulamanın genel uç noktalarından biri için bir istekte bulundurabilirsiniz.

Aşağıdaki örnekte, site bağlantı noktası üzerinde bir IIS Ana Bilgisayar adına www.mysite.com bağlı. 80 için bir istek http://www.mysite.com yapılır:

Microsoft Edge tarayıcısı IIS başlangıç sayfasını yükledi.

Kilitli dağıtım dosyaları

Uygulama çalıştırılıken dağıtım klasöründeki dosyalar kilitlenir. Kilitli dosyaların üzerine dağıtım sırasında yazılamaz. Bir dağıtımda kilitli dosyaları serbest bırakmak için, aşağıdaki yaklaşımlardan birini kullanarak uygulama havuzunu durdurun:

  • Proje Web Dağıtımı ve Microsoft.NET.Sdk.Web başvuru kullanın. Bir app_offline.htm dosyası web uygulaması dizininin köküne yerleştirilir. Dosya mevcut olduğunda, ASP.NET Core Modülü uygulamayı başarıyla kapatır ve dağıtım sırasında app_offline.htm dosyasını hizmet eder. Daha fazla bilgi için bkz. ASP.NET Core Modülü yapılandırma başvurusu.

  • Sunucu üzerinde IIS Yöneticisi'nde uygulama havuzunu el ile durdurun.

  • PowerShell'i kullanarak app_offline.htm(PowerShell 5 veya sonraki bir tarih gerektirir):

    $pathToApp = 'PATH_TO_APP'
    
    # Stop the AppPool
    New-Item -Path $pathToApp app_offline.htm
    
    # Provide script commands here to deploy the app
    
    # Restart the AppPool
    Remove-Item -Path $pathToApp app_offline.htm
    
    

Veri koruma

Veri ASP.NET Core yığını, kimlik doğrulamasında kullanılan ara yazılım ASP.NET Core çeşitli yazılım ara yazılımları tarafından kullanılır. Veri Koruma API'leri kullanıcı kodu tarafından çağrılmasa bile, kalıcı bir şifreleme anahtar deposu oluşturmak için veri koruması bir dağıtım betiğiyle veya kullanıcı kodunda yapılandırmalısınız. Veri koruması yapılandırılmamışsa, anahtarlar bellekte tutularak uygulama yeniden başlatıldığında atılır.

Uygulama yeniden başlatıldığında anahtar halkası bellekte depolanıyorsa:

IIS altında veri korumasını anahtar halkasını kalıcı olacak şekilde yapılandırmak için aşağıdaki yaklaşımlardan birini kullanın:

  • Veri Koruma Kayıt Defteri Anahtarları Oluşturma

    Bu uygulamalar tarafından ASP.NET Core koruma anahtarları, uygulamaların dışında kayıt defterinde depolanır. Verilen bir uygulamanın anahtarlarını kalıcı yapmak için uygulama havuzu için kayıt defteri anahtarları oluşturun.

    Tek başına, webfarm olmayan IIS yüklemeleri için Data Protection Provision-AutoGenKeys.ps1 PowerShell betiği, bir web uygulamasıyla kullanılan her uygulama havuzu ASP.NET Core 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 istirahatta şifrelenir.

    Web grubu senaryolarında, bir uygulama, veri koruma anahtar halkasını depolamak için UNC yolunu kullanmak üzere yalıtabilirsiniz. Varsayılan olarak, veri koruma anahtarları şifrelenmez. Ağ paylaşımı için dosya izinlerin, uygulamanın altında Windows hesabıyla sınırlı olduğundan emin olun. Bir X509 sertifikası, kalan anahtarları korumak için kullanılabilir. Kullanıcıların sertifikaları yüklemesine izin vermek için bir mekanizma düşünün: Sertifikaları kullanıcının güvenilen sertifika deposuna yer açın ve kullanıcının uygulamasının çalıştırıldık tüm makinelerde kullanılabilir olduğundan emin olur. Ayrıntılar için ASP.NET Core Veri Korumasını Yapılandırma'ya bakın.

  • KULLANıCı profilini yüklemek için IIS Uygulama Havuzunu yapılandırma

    Bu ayar, uygulama havuzu için Gelişmiş Ayarlar İşlem Modeli bölümündedir. Kullanıcı Profilini Yükle olarak True ayarlayın. olarak ayarlandığı zaman, anahtarlar kullanıcı profili dizininde depolanır ve DPAPI kullanılarak kullanıcı True hesabına özgü bir anahtarla korunur. Anahtarlar %LOCALAPPDATA%/ASP.NET/DataProtection-Keys klasöründe kalıcıdır.

    Uygulama havuzunun setProfileEnvironment özniteliği de etkinleştirilmelidir. varsayılan setProfileEnvironment true değeridir. Bazı senaryolarda (örneğin, Windows işletim sistemi) setProfileEnvironment olarak false ayarlanır. Anahtarlar kullanıcı profili dizininde beklendiği gibi depolenmiyorsa:

    1. %windir%/system32/inetsrv/config klasörüne gidin.
    2. applicationHost.config açın.
    3. öğesini <system.applicationHost><applicationPools><applicationPoolDefaults><processModel> bulun.
    4. özniteliğinin mevcut olmadığını onaylayın, bu değer varsayılan olarak ayarlanır veya özniteliğin değerini setProfileEnvironment true açıkça olarak true ayarlayın.
  • Dosya sistemini anahtar halkası deposu olarak kullanma

    Dosya sistemini anahtar halkası deposu olarak kullanmak için uygulama kodunu ayarlayın. Anahtar halkasını korumak ve sertifikanın güvenilir bir sertifika olduğundan emin olmak için bir X509 sertifikası kullanın. Sertifika otomatik olarak imzalandı ise, sertifikayı Güvenilen Kök deposuna yer.

    Bir web grubu içinde IIS kullanırken:

  • Veri koruma için makine genelinde ilke ayarlama

    Veri koruma sistemi, Veri Koruma API'lerini tüketen 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 koruma.

Sanal Dizinler

IIS Sanal Dizinleri, diğer uygulamalarla ASP.NET Core. Bir uygulama bir alt uygulama olarak barındırabilirsiniz.

Alt uygulamalar

Bir ASP.NET Core bir IIS alt uygulaması (alt uygulama) olarak barındırabilirsiniz. Alt uygulamanın yolu, kök uygulamanın URL'sinin bir parçası olur.

Bir alt uygulama, ASP.NET Core modülünü işleyici olarak içermemektedir. Modül bir alt uygulamanın web.config dosyasına işleyici olarak eklenirse, alt uygulamaya göz at yapmaya çalışırken hatalı yapılandırma dosyasına başvuran 500.19 İç Sunucu Hatası alınmıştır.

Aşağıdaki örnekte, birweb.configalt uygulaması için yayımlanmış ASP.NET Core dosyası gösterir:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <aspNetCore processPath="dotnet" 
      arguments=".\MyApp.dll" 
      stdoutLogEnabled="false" 
      stdoutLogFile=".\logs\stdout" />
  </system.webServer>
</configuration>

ASP.NET Core uygulamasının ASP.NET Core olmayan bir alt uygulamayı barındırırken, alt uygulamanınweb.configdosyasında devralınan işleyiciyi açıkça kaldırın:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <remove name="aspNetCore" />
    </handlers>
    <aspNetCore processPath="dotnet" 
      arguments=".\MyApp.dll" 
      stdoutLogEnabled="false" 
      stdoutLogFile=".\logs\stdout" />
  </system.webServer>
</configuration>

Alt uygulama içindeki statik varlık bağlantılarının tilde-slash ( ~/ ) notasyonu kullanması gerekir. Tilde-slash özelliği, alt uygulamanın yol tabanını işlenmiş göreli bağlantıya hazırlamak için bir Etiket Yardımcısı tetikler. uygulamasındaki bir alt uygulama /subapp_path için ile bağlantılı bir görüntü olarak src="~/image.png" src="/subapp_path/image.png" 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.

Statik varlığın özniteliği mutlak yola (örneğin, ) ayarlanırsa, bağlantı alt uygulamanın yol temeli src src="/image.png" olmadan işlenir. Kök uygulamanın Statik Dosya Ara Yazılımı, kök uygulamanın webkökünden varlığın hizmet vermeye çalışır ve bu da statik varlık kök uygulama tarafından kullanılabilir olmadığı sürece 404 - Bulunamadı yanıtıyla sonuç verir.

Bir uygulamayı ASP.NET Core uygulamanın altında alt uygulama olarak barındırmak ASP.NET Core için:

  1. Alt uygulama için bir uygulama havuzu kurma. .NET Core için Çekirdek Ortak Dil Çalışma Zamanı (CoreCLR) masaüstü CLR (.NET CLR) değil, çalışan işlemi içinde uygulamayı barındırmak için önyük olduğundan .NET CLR Sürümünü Yönetilen Kod Yok olarak ayarlayın.

  2. Iis Yöneticisi'nde kök siteyi, alt uygulamayla kök sitenin altındaki bir klasöre ekleyin.

  3. IIS Yöneticisi'nde alt uygulama klasörüne sağ tıklayın ve Uygulamaya Dönüştür'e tıklayın.

  4. Uygulama Ekle iletişim kutusunda, alt uygulama için oluşturduğunuz uygulama havuzunu atamak üzere Uygulama Havuzu için Seç düğmesini kullanın. Tamam’ı seçin.

İşlem içinde barındırma modelini kullanırken alt uygulamaya ayrı bir uygulama havuzu ataması bir gereksinimdir.

İşlem sırasında barındırma modeli ve uygulama modülü yapılandırma hakkında daha fazla bilgi ASP.NET Core bkz. ASP.NET Core Modülü .

IIS'nin web.config

IIS yapılandırması, ASP.NET Core Modülü ileweb.configiis senaryoları için ASP.NET Core senaryolarının <system.webServer> ASP.NET Core etkilemektedir. Örneğin, IIS yapılandırması dinamik sıkıştırma için işlevseldir. IIS, sunucu düzeyinde dinamik sıkıştırma kullanmak üzere yapılandırılmışsa, uygulamanınweb.configdosyasındaki öğe, uygulamanın ASP.NET Core <urlCompression> devre dışı bırakabilirsiniz.

Daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın:

Yalıtılmış uygulama havuzlarında (IIS 10.0 veya sonrası için desteklenen) tek tek uygulamalar için <environmentVariables> ortam değişkenlerini ayarlamak için IIS başvuru belgelerinde Ortam Değişkenleri konusununAppCmd.exe komutu bölümüne bakın.

ASP.NET Core

web.config4.x uygulamalarının ASP.NET bölümleri, ASP.NET Core için kullanılamaz:

  • <system.web>
  • <appSettings>
  • <connectionStrings>
  • <location>

ASP.NET Core diğer yapılandırma sağlayıcıları kullanılarak yapılandırılır. Daha fazla bilgi için bkz. Yapılandırma.

Uygulama Havuzları

Bir sunucuda birden çok web sitesi barındırarak, her uygulamayı kendi uygulama havuzunda çalıştırarak uygulamaları diğerlerinden yalıtmanızı öneririz. IIS Web Sitesi Ekle iletişim kutusu varsayılan olarak bu yapılandırmayı kullanır. Bir Site adı sağlanıyorsa, metin otomatik olarak Uygulama havuzu metin kutusuna aktarılır. Site ekleniyorken 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 sağlar. IIS 8.0 veya sonraki bir üzerinde, IIS Yönetici Çalışan süreci (WAS) yeni uygulama havuzunun adıyla bir sanal hesap oluşturur ve uygulama havuzunun çalışan işlemlerini varsayılan olarak bu hesap altında çalıştırır. Uygulama havuzu için Gelişmiş Yönetim Ayarlar IIS Yönetim Konsolu'da, uygulamasının Identity ApplicationPool kullanmak üzere ayarlanmış olduğundan emin olun: Identity

Uygulama havuzu gelişmiş ayarlar iletişim kutusu

IIS yönetim işlemi, Windows Güvenliği System'de uygulama havuzunun adıyla güvenli Windows Güvenliği oluşturur. Bu kimlik kullanılarak kaynakların güvenliği sağlandı. Ancak, bu kimlik gerçek bir kullanıcı hesabı değildir ve Kullanıcı Yönetim Konsolu'Windows göstermez.

IIS çalışan işlemi uygulamaya yükseltilmiş erişim gerektiriyorsa, uygulamayı içeren dizin için Access Control Listesini (ACL) değiştirebilirsiniz:

  1. Windows Gezgini'ni açın ve dizinine gidin.

  2. Dizine sağ tıklayın ve Özellikler'i seçin.

  3. Güvenlik sekmesinin altında Düzenle düğmesini ve ardından Ekle düğmesini seçin.

  4. Konumlar düğmesini seçin ve sistemin seçili olduğundan emin olun.

  5. Seçilen nesne \ adlarını<app_pool_name> alanına IIS AppPool girişlerini girin. Adları Kontrol Edin düğmesini seçin. DefaultAppPool için IIS AppPool\DefaultAppPool kullanarak adları kontrol edin. Adları Kontrol Edin düğmesi seçildiğinde, nesne adları alanında DefaultAppPool değeri belirtilmiştir. Uygulama havuzu adını doğrudan nesne adları alanına girmek mümkün değildir. Nesne adını kontrol \<app_pool_name> IIS AppPool dosya biçimini kullanın.

    Uygulama klasörü için kullanıcıları veya grupları seçin iletişim kutusu: "Adları Denetleme" seçmeden önce nesne adları alanında "DefaultAppPool" uygulama havuzu adı "IIS AppPool" bölümüne " eklenir.

  6. Tamam’ı seçin.

    Uygulama klasörü için Kullanıcı veya Grup Seç iletişim kutusu: "adları denetle" seçeneğini belirledikten sonra, nesne adları alanında "DefaultAppPool" nesne adı gösterilir.

  7. Okuma & yürütme izinleri varsayılan olarak verilmelidir. Gerektiğinde ek izinler sağlayın.

Erişim, ıacl 'ler Aracı kullanılarak bir komut isteminde de verilebilir. Örnek olarak DefaultAppPool kullanarak, aşağıdaki komut kullanılır:

ICACLS C:\sites\MyWebApp /grant "IIS AppPool\DefaultAppPool":F

Daha fazla bilgi için ıcacl 'ler konusuna bakın.

HTTP/2 desteği

Http/2 , aşağıdaki temel gereksinimleri karşılayan işlem dışı dağıtımlar için desteklenir:

  • Windows Server 2016/Windows 10 veya üzeri; IIS 10 veya üzeri
  • Herkese açık uç sunucu bağlantıları HTTP/2 kullanır, ancak Kestrel sunucuya ters proxy bağlantısı http/1.1 kullanır.
  • Hedef Framework: HTTP/2 bağlantısı tamamen IIS tarafından işlendiğinden, işlem dışı dağıtımlar için geçerli değildir.
  • TLS 1,2 veya üzeri bağlantı

Bir HTTP/2 bağlantısı kurulduysa, HttpRequest. Protocol Reports HTTP/1.1 .

HTTP/2 varsayılan olarak etkindir. HTTP/2 bağlantısı kurulmadıysa bağlantılar HTTP/1.1 'ye geri döner. IIS dağıtımları ile HTTP/2 yapılandırması hakkında daha fazla bilgi için bkz. IIS 'de http/2.

CORS ön denetim istekleri

bu bölüm, yalnızca .NET Framework hedefleyen ASP.NET Core uygulamalar için geçerlidir.

.NET Framework hedefleyen ASP.NET Core bir uygulama için, seçenekler istekleri uygulamaya varsayılan olarak ııs 'de aktarılmaz. web.config ' de uygulamanın ııs işleyicilerini seçenek isteklerini geçirmek üzere nasıl yapılandıracağınızı öğrenmek için bkz. ASP.NET Web apı 2 ' de çapraz kaynak isteklerini etkinleştirme: CORS 'nin nasıl çalıştığı.

IIS yöneticileri için dağıtım kaynakları

Ek kaynaklar