ASP.NET Core ile IIS modülleri

Bazı yerel IIS modülleri ve iis tarafından yönetilen tüm modüller, uygulamalar için istekleri ASP.NET Core. Çoğu durumda, ASP.NET Core IIS yerel ve yönetilen modülleri tarafından ele alınarak ele alınan senaryolara bir alternatif sunar.

Yerel modüller

Tablosunda, ASP.NET Core uygulamalarıyla işlevsel olan yerel IIS modülleri ve ASP.NET Core gösterir.

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

†URL Yeniden Yazma Modülünün ve eşleşme türlerinin dizin isFile isDirectory yapısında ASP.NET Core uygulamalarla çalışmaması.

Yönetilen modüller

Yönetilen modüller, uygulama havuzunun .NET CLR sürümü Yönetilen Kod Yok olarak ASP.NET Core barındırılan uygulamalarla işlevsel değildir. ASP.NET Core çeşitli durumlarda ara yazılım alternatifleri sunar.

Modül ASP.NET Core Seçeneği
Anonymousıdentification
DefaultAuthentication
FileAuthorization
FormsAuthentication Cookie Kimlik Doğrulama Ara Yazılımı
OutputCache yanıt Önbelleğe Alma ara yazılımı
Profil
'Da
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 uygulamayı dağıtırken ve web.config dahil olmak üzere, IIS Yöneticisi ile yapılan tüm değişiklikler dağıtılan web.config dosyası tarafından üzerine 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 uygulama için devre dışı bırakılması gereken sunucu düzeyinde bir IIS modülü yapılandırılırsa, uygulamanın web.config dosyasına ek olarak modülü devre dışı bırakabilirsiniz. Modülü yerinde bırakın ve bir yapılandırma ayarı (varsa) kullanarak devre dışı bırakın ya da modülü uygulamadan kaldırın.

Modül devre dışı bırakma

Birçok modül, uygulamanın modül uygulamadan kaldırılmadan devre dışı olmasına izin veren bir yapılandırma ayarı sunar. Bu, bir modülün devre dışı bırakılması için en basit ve en hızlı yoldur. Örneğin, HTTP yeniden yönlendirme modülüweb.configöğesi ile devre dışı bırakılabilir <httpRedirect> : **

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

Yapılandırma ayarları ile modülleri devre dışı bırakma hakkında daha fazla bilgi için, <system.webServer> IIS'nin alt öğeler bölümündeki bağlantıları izleyin.

Modül kaldırma

web.config bir ayarı olan bir modülü kaldırmak istiyorsanız modülün kilidini açın ve <modules> önce web.config bölümünün kilidini açın:

  1. Modülün kilidini sunucu düzeyinde açın. IIS Yöneticisi bağlantıları kenar çubuğundan IIS sunucusunu seçin. IIS alanında modüller ' i açın. Listeden modülü seçin. Sağdaki Eylemler kenar çubuğunda, ' ı seçin. Modülün eylem girdisi kilit olarak görünürse, modülün kilidi zaten açık olur ve herhangi bir eylem gerekmez. web.config daha sonra kaldırmayı planladığınız sayıda modülün kilidini açın.

  2. Uygulamayıweb.configbir bölüm olmadan dağıtın <modules> . ** Bir uygulama, IIS Yöneticisi 'nde ilk olarak bölümün kilidini açmadan bölüm içeren bir web.config dağıtılırsa <modules> , Configuration Manager bölümün kilidini açmaya çalışırken bir özel durum oluşturur. Bu nedenle, uygulamayı bir bölüm olmadan dağıtın <modules> .

  3. <modules> web.config bölümünün kilidini açın. Bağlantılar kenar çubuğunda sitelerde Web sitesini seçin. Yönetim alanında, yapılandırma düzenleyicisini açın. Bölümü seçmek için gezinti denetimlerini kullanın system.webServer/modules . Sağdaki Eylemler kenar çubuğunda, bölümün kilidini açmak için öğesini seçin. Modül bölümü için eylem girişi kilit bölümü olarak görünürse modül bölümünün kilidi zaten açık olur ve herhangi bir eylem gerekmez.

  4. <modules>Modülün uygulamadan kaldırılması için, bir öğesi ile uygulamanın yerel web.config dosyasına bir bölüm ekleyin <remove> . Birden çok <remove> modülü kaldırmak için birden çok öğe ekleyin. Sunucuda web.config değişiklik yapılırsa, projenin web.config dosyasında aynı değişiklikleri hemen yerel olarak yapın. Bu yaklaşımı kullanarak bir modülün kaldırılması, modülün sunucu üzerindeki 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ül eklemek veya kaldırmak için, bölümün kilidini açmak üzere applicationHost.config değiştirin <modules> :

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

  2. <section>IIS modülleri için öğesini bulun ve ' overrideModeDefault den ' Deny ye geçin Allow :

    <section name="modules"
             allowDefinition="MachineToApplication"
             overrideModeDefault="Allow" />
    
  3. <location path="" overrideMode="Allow"><system.webServer><modules> bölümünü bulun. Kaldırmak istediğiniz modüller için, ' dan ' a ayarlayın lockItem true false . Aşağıdaki örnekte, CGI modülünün kilidi açıldı:

    <add name="CgiModule" lockItem="false" />
    
  4. <modules>Bölüm ve bağımsız modüllerin kilidi açıldıktan sonra, uygulamayı IIS Express çalıştırmak için uygulamanın web.config dosyasını kullanarak IIS modüllerini ekleme veya kaldırma ücretsizdir.

Ayrıca, Appcmd.exe Ile bir IIS modülü de kaldırılabilir. MODULE_NAMEKomutuna ve komutuna şunu girin APPLICATION_NAME :

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

Örneğin, DynamicCompressionModule varsayılan Web sitesinden öğesini kaldırın:

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

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

ASP.NET Core bir uygulamayı çalıştırmak için gereken tek modüller, anonim kimlik doğrulama modülüdür ve ASP.NET Core modülüdür.

urı Önbelleğe Alma modülü ( UriCacheModule ), ııs 'nin URL düzeyinde web sitesi yapılandırmasını önbelleğe almasına izin verir. Bu modül olmadan, aynı URL sürekli olarak istendiği zaman bile IIS her istekte yapılandırmayı okumalı ve ayrıştıramalıdır. Yapılandırma ayrıştırılırken her istek önemli bir performans cezasına neden olur. barındırılan bir ASP.NET Core uygulamasının çalışması için urı Önbelleğe Alma modülü kesinlikle gerekli olmasa da, urı Ö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 ), ııs çıkış önbelleğini ve ayrıca öğeleri önbelleğe alma mantığını HTTP.sys önbelleğinde uygular. Bu modül olmadan içerik artık çekirdek modunda önbelleğe alınmaz ve önbellek profilleri yok sayılır. HTTP Önbelleğe Alma modülünü kaldırmak, genellikle performans ve kaynak kullanımındaki olumsuz etkileri vardır. barındırılan bir 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 Core dağıtımları için etkinleştirilmesini öneririz.

Ek kaynaklar