ASP.NET Core içeren IIS modülleri

Bazı yerel IIS modülleri ve IIS tarafından yönetilen modüllerin tümü ASP.NET Core uygulamalarına yönelik istekleri işleyemez. Çoğu durumda ASP.NET Core, IIS yerel ve yönetilen modülleri tarafından ele alınan senaryolara bir alternatif sunar.

Yerel modüller

Tablo, ASP.NET Core uygulamaları ve ASP.NET Çekirdek Modülü ile işlevsel yerel IIS modüllerini gösterir.

Modül ASP.NET Core uygulamalarıyla işlevsel ASP.NET Çekirdek Seçeneği
Anonim Kimlik Doğrulaması
AnonymousAuthenticationModule
Evet
Temel Kimlik Doğrulama
BasicAuthenticationModule
Evet
İstemci Sertifikası Eşleme Kimlik Doğrulaması
CertificateMappingAuthenticationModule
Evet
CGI
CgiModule
Hayır
Yapılandırma Doğrulaması
ConfigurationValidationModule
Evet
HTTP Hataları
CustomErrorModule
Hayır Durum Kodu Sayfaları Ara Yazılımı
Özel Günlük
CustomLoggingModule
Evet
Varsayılan Belge
DefaultDocumentModule
Hayır Varsayılan Dosyalar Ara Yazılımı
Özet Kimlik Doğrulaması
DigestAuthenticationModule
Evet
Dizin Tarama
DirectoryListingModule
Hayır Dizine Gözatma Ara Yazılımı
Dinamik Sıkıştırma
DynamicCompressionModule
Evet Yanıt Sıkıştırma Ara Yazılımı
Başarısız İstek İzleme
FailedRequestsTracingModule
Evet ASP.NET Çekirdek Günlüğü
Dosya Önbelleğe Alma
FileCacheModule
Hayır Yanıtları Önbelleğe Alma Ara Yazılımı
HTTP Önbelleğe Alma
HttpCacheModule
Hayır Yanıtları Önbelleğe Alma Ara Yazılımı
HTTP Günlüğü
HttpLoggingModule
Evet ASP.NET Çekirdek Günlüğü
HTTP Yeniden Yönlendirmesi
HttpRedirectionModule
Evet URL Yeniden Yazma Ara Yazılımı
HTTP İzleme
TracingModule
Evet
IIS İstemci Sertifikası Eşleme Kimlik Doğrulaması
IISCertificateMappingAuthenticationModule
Evet
IP ve Etki Alanı Kısıtlamaları
IpRestrictionModule
Evet
ISAPI Filtreleri
IsapiFilterModule
Evet Ara Yazılım
ISAPI
IsapiModule
Evet Ara Yazılım
Protokol Desteği
ProtocolSupportModule
Evet
İstek Filtreleme
RequestFilteringModule
Evet URL Yeniden Yazma Ara Yazılımı IRule
İstek İzleyicisi
RequestMonitorModule
Evet
URL Yeniden Yazma
RewriteModule
Evet URL Yeniden Yazma Ara Yazılımı
Sunucu Tarafı eklemeleri
ServerSideIncludeModule
Hayır
Statik Sıkıştırma
StaticCompressionModule
Hayır Yanıt Sıkıştırma Ara Yazılımı
Statik İçerik
StaticFileModule
Hayır Statik Dosya Ara Yazılımı
Belirteç Önbelleğe Alma
TokenCacheModule
Evet
URI Önbelleğe Alma
UriCacheModule
Evet
URL Yetkilendirmesi
UrlAuthorizationModule
Evet ASP.NET Core Identity
Webdav
WebDAV
Hayır
Windows Kimlik Doğrulaması
WindowsAuthenticationModule
Evet

† Url Yeniden Yazma Modülü isFile ve isDirectory eşleştirme türleri, dizin yapısındaki değişiklikler nedeniyle ASP.NET Core uygulamalarıyla çalışmaz.

Yönetilen modüller

Yönetilen modüller, uygulama havuzunun .NET CLR sürümü Yönetilen Kod Yok olarak ayarlandığında barındırılan ASP.NET Core uygulamalarıyla çalışmaz. ASP.NET Core, çeşitli durumlarda ara yazılım alternatifleri sunar.

Modül ASP.NET Çekirdek Seçeneği
Anonymousıdentification
DefaultAuthentication
FileAuthorization
FormsAuthentication Cookie Kimlik Doğrulama Ara Yazılımı
Outputcache Yanıtları Önbelleğe Alma Ara Yazılımı
Profil
Rolemanager
ScriptModule-4.0
Oturum Oturum Ara Yazılımı
UrlAuthorization
UrlMappingsModule URL Yeniden Yazma Ara Yazılımı
UrlRoutingModule-4.0 ASP.NET Core Identity
WindowsAuthentication

IIS Yöneticisi uygulama değişiklikleri

Ayarları yapılandırmak için IIS Yöneticisi kullanılırken, uygulamanın web.config dosyası değiştirilir. Bir uygulama dağıtılıyorsa ve web.config dahil olmak üzere, IIS Yöneticisi ile yapılan değişikliklerin üzerine dağıtılan web.config dosyası yazılır. Sunucunun web.config dosyasında değişiklik yapılırsa, sunucudaki güncelleştirilmiş web.config dosyasını hemen yerel projeye kopyalayın.

IIS modüllerini devre dışı bırakma

Bir IIS modülü, bir uygulama için devre dışı bırakılması gereken sunucu düzeyinde yapılandırılmışsa, uygulamanın web.config dosyasına ek olarak modülü devre dışı bırakabilir. Modülü yerinde bırakın ve bir yapılandırma ayarı kullanarak (varsa) devre dışı bırakın veya modülü uygulamadan kaldırın.

Modül devre dışı bırakma

Birçok modül, modülü uygulamadan kaldırmadan devre dışı bırakmalarını sağlayan bir yapılandırma ayarı sunar. Bu, modülü devre dışı bırakmanın en basit ve en hızlı yoludur. Örneğin, HTTP Yeniden Yönlendirme Modülü web.config içindeki öğesiyle <httpRedirect> devre dışı bırakılabilir:

<configuration>
  <system.webServer>
    <httpRedirect enabled="false" />
  </system.webServer>
</configuration>

Modülleri yapılandırma ayarlarıyla devre dışı bırakma hakkında daha fazla bilgi için IIS system.webServer'ın >Alt Öğeler bölümündeki bağlantıları izleyin.<

Modül kaldırma

Web.config'de bir ayarı olan bir modülü kaldırmayı tercih ediyorsanız önce modülün kilidini açın ve önce web.config bölümünün kilidini açın<modules>:

  1. Modülün kilidini sunucu düzeyinde açın. IIS Yöneticisi Bağlan ions kenar çubuğunda IIS sunucusunu seçin. IIS alanında Modülleriaçın. Listeden modülü seçin. Sağdaki Eylemler kenar çubuğunda Kilidi Aç'ı seçin. Modülün eylem girişi Kilit olarak görünüyorsa modülün kilidi zaten açıktır ve hiçbir eylem gerekmez. Daha sonra web.config dosyasından kaldırmayı planladığınız kadar modülün kilidini açın.

  2. Uygulamayı web.config içinde bir <modules> bölüm olmadan dağıtın. Bir uygulama, IIS Yöneticisi'nde önce bölümün <modules> kilidini açmadan bölümü içeren bir web.config ile dağıtılırsa, Configuration Manager bölümün kilidini açmayı denerken bir özel durum oluşturur. Bu nedenle, uygulamayı bölüm <modules> olmadan dağıtın.

  3. <modules> web.config bölümünün kilidini açın. Bağlan ions kenar çubuğunda Siteler'de web sitesini seçin. Yönetim alanında Yapılandırma Düzenleyicisi'ni açın. Bölümü seçmek system.webServer/modules için gezinti denetimlerini kullanın. Sağdaki Eylemler kenar çubuğunda Bölümün kilidini aç'ı seçin. Modül bölümünün eylem girişi Bölümü Kilitle olarak görünüyorsa modül bölümünün kilidi zaten açıktır ve hiçbir eylem gerekmez.

  4. <modules> Modülü uygulamadan kaldırmak için bir öğesiyle uygulamanın yerel web.config dosyasına bir <remove> bölüm ekleyin. Birden çok <remove> modülü kaldırmak için birden çok öğe ekleyin. Sunucuda web.config değişiklikleri yapılırsa, aynı değişiklikleri projenin web.config dosyasında yerel olarak hemen yapın. Bu yaklaşımı kullanarak bir modülün kaldırılması, modülün sunucudaki diğer uygulamalarla kullanımını etkilemez.

    <configuration>
     <system.webServer>
       <modules>
         <remove name="MODULE_NAME" />
       </modules>
     </system.webServer>
    </configuration>
    

web.config kullanarak IIS Express modüllerini eklemek veya kaldırmak için applicationHost.config dosyasını değiştirerek bölümün <modules> kilidini açın:

  1. {APPLICATION ROOT}\.vs\config\applicationhost.config dosyasını açın.

  2. IIS modülleri için <section> öğesini bulun ve olarak DenyAllowdeğiştirinoverrideModeDefault:

    <section name="modules"
             allowDefinition="MachineToApplication"
             overrideModeDefault="Allow" />
    
  3. <location path="" overrideMode="Allow"><system.webServer><modules> Bölümünü bulun. Kaldırmak istediğiniz tüm modüller için,'den true olarak falseayarlayınlockItem. Aşağıdaki örnekte CGI Modülünün kilidi açık:

    <add name="CgiModule" lockItem="false" />
    
  4. Bölümün ve tek tek modüllerin <modules> kilidi kaldırıldıktan sonra, uygulamayı IIS Express'te çalıştırmak için uygulamanın web.config dosyasını kullanarak IIS modülleri ekleyebilir veya kaldırabilirsiniz.

Appcmd.exe ile bir IIS modülü de kaldırılabilir. komutunda MODULE_NAME ve APPLICATION_NAME değerini sağlayın:

Appcmd.exe delete module MODULE_NAME /app.name:APPLICATION_NAME

Örneğin, Varsayılan Web Sitesinden öğesini kaldırın DynamicCompressionModule :

%windir%\system32\inetsrv\appcmd.exe delete module DynamicCompressionModule /app.name:"Default Web Site"

En düşük modül yapılandırması

ASP.NET Core uygulamasını çalıştırmak için gereken tek modüller Anonim Kimlik Doğrulama Modülü ve ASP.NET Çekirdek Modülü'lerdir.

URI Önbelleğe Alma Modülü (UriCacheModule), IIS'nin web sitesi yapılandırmasını URL düzeyinde önbelleğe almasına olanak tanır. Bu modül olmadan, aynı URL tekrar tekrar istendiğinde bile IIS'nin her istekte yapılandırmayı okuması ve ayrıştırması gerekir. Yapılandırmanın her istek ayrıştırılması önemli bir performans cezasına neden olur. Barındırılan ASP.NET Core uygulamasının çalışması için URI Önbelleğe Alma Modülü kesinlikle gerekli olmasa da, URI Önbelleğe Alma Modülünün tüm ASP.NET Core dağıtımları için etkinleştirilmesini öneririz.

HTTP Önbelleğe Alma Modülü (HttpCacheModule), IIS çıkış önbelleğini ve ayrıca HTTP.sys önbelleğindeki öğeleri önbelleğe alma mantığını uygular. Bu modül olmadan içerik artık çekirdek modunda önbelleğe alınmaz ve önbellek profilleri yoksayılır. HTTP Önbelleğe Alma Modülünün kaldırılması genellikle performans ve kaynak kullanımı üzerinde olumsuz etkilere neden olur. Barındırılan ASP.NET Core uygulamasının çalışması için HTTP Önbelleğe Alma Modülü kesinlikle gerekli olmasa da, http Önbelleğe Alma modülünün tüm ASP.NET Çekirdek dağıtımları için etkinleştirilmesini öneririz.

Ek kaynaklar