Modul IIS dengan ASP.NET Core

Beberapa modul IIS asli dan semua modul terkelola IIS tidak dapat memproses permintaan untuk aplikasi ASP.NET Core. Dalam banyak kasus, ASP.NET Core menawarkan alternatif untuk skenario yang ditangani oleh modul asli dan terkelola IIS.

Modul asli

Tabel menunjukkan modul IIS asli yang berfungsi dengan aplikasi ASP.NET Core dan Modul inti ASP.NET.

Modul Fungsional dengan aplikasi ASP.NET Core Opsi inti ASP.NET
Autentikasi Anonim
AnonymousAuthenticationModule
Ya
Autentikasi Dasar
BasicAuthenticationModule
Ya
Autentikasi Pemetaan Sertifikasi Klien
CertificateMappingAuthenticationModule
Ya
CGI
CgiModule
Tidak
Validasi Konfigurasi
ConfigurationValidationModule
Ya
Kesalahan HTTP
CustomErrorModule
Tidak Middleware Halaman Kode Status
Pengelogan Kustom
CustomLoggingModule
Ya
Dokumen Default
DefaultDocumentModule
Tidak Middleware File Default
Autentikasi Hash
DigestAuthenticationModule
Ya
Penjelajahan Direktori
DirectoryListingModule
Tidak Middleware Penjelajahan Direktori
Pemadatan Dinamis
DynamicCompressionModule
Ya Middleware Pemadatan Respons
Pelacakan Permintaan Gagal
FailedRequestsTracingModule
Ya Pengelogan ASP.NET Core
Penembolokan File
FileCacheModule
Tidak Middleware Penembolokan Respons
Penembolokan HTTP
HttpCacheModule
Tidak Middleware Penembolokan Respons
Pengelogan HTTP
HttpLoggingModule
Ya Pengelogan ASP.NET Core
Pengalihan HTTP
HttpRedirectionModule
Ya Middleware Penulisan Ulang URL
Pelacakan HTTP
TracingModule
Ya
Autentikasi Pemetaan Sertifikat Klien IIS
IISCertificateMappingAuthenticationModule
Ya
Pembatasan IP dan Domain
IpRestrictionModule
Ya
Filter ISAPI
IsapiFilterModule
Ya Middleware
ISAPI
IsapiModule
Ya Middleware
Dukungan Protokol
ProtocolSupportModule
Ya
Pemfilteran Permintaan
RequestFilteringModule
Ya Middleware Penulisan Ulang URL IRule
Pemantau Permintaan
RequestMonitorModule
Ya
Penulisan Ulang URL†
RewriteModule
Ya Middleware Penulisan Ulang URL
Sisi Server Mencakup
ServerSideIncludeModule
Tidak
Kompresi Statis
StaticCompressionModule
Tidak Middleware Pemadatan Respons
Konten Statis
StaticFileModule
Tidak Middleware File Statik
Penembolokan Token
TokenCacheModule
Ya
Penembolokan URI
UriCacheModule
Ya
Otorisasi URL
UrlAuthorizationModule
Ya ASP.NET Core Identity
Webdav
WebDAV
Tidak
Autentikasi Windows
WindowsAuthenticationModule
Ya

†Tipe Modul isFile Penulisan Ulang URL dan isDirectory jenis kecocokan tidak berfungsi dengan aplikasi ASP.NET Core karena perubahan struktur direktori.

Modul terkelola

Modul terkelola tidak berfungsi dengan aplikasi ASP.NET Core yang dihosting saat versi .NET CLR kumpulan aplikasi diatur ke Tanpa Kode Terkelola. ASP.NET Core menawarkan alternatif middleware dalam beberapa kasus.

Modul Opsi inti ASP.NET
AnonimIdentifikasi
DefaultAuthentication
FileAuthorization
FormsAuthentication Cookie Middleware Autentikasi
OutputCache Middleware Penembolokan Respons
Profil
RoleManager
ScriptModule-4.0
Sesi Middleware Sesi
UrlAuthorization
UrlMappingsModule Middleware Penulisan Ulang URL
UrlRoutingModule-4.0 ASP.NET Core Identity
WindowsAuthentication

Perubahan aplikasi Manajer IIS

Saat menggunakan IIS Manager untuk mengonfigurasi pengaturan, file web.config aplikasi diubah. Jika menyebarkan aplikasi dan menyertakan web.config, setiap perubahan yang dilakukan dengan IIS Manager ditimpa oleh file web.config yang disebarkan. Jika perubahan dilakukan pada file web.config server, salin file web.config yang diperbarui di server ke proyek lokal segera.

Menonaktifkan modul IIS

Jika modul IIS dikonfigurasi di tingkat server yang harus dinonaktifkan untuk aplikasi, tambahan ke file web.config aplikasi dapat menonaktifkan modul. Biarkan modul di tempat dan nonaktifkan menggunakan pengaturan konfigurasi (jika tersedia) atau hapus modul dari aplikasi.

Pennonaktifkan modul

Banyak modul menawarkan pengaturan konfigurasi yang memungkinkannya dinonaktifkan tanpa menghapus modul dari aplikasi. Ini adalah cara paling sederhana dan tercepat untuk menonaktifkan modul. Misalnya, Modul Pengalihan HTTP dapat dinonaktifkan dengan <httpRedirect> elemen di web.config:

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

Untuk informasi selengkapnya tentang menonaktifkan modul dengan pengaturan konfigurasi, ikuti tautan di bagian Elemen Turunan dari IIS <system.webServer>.

Penghapusan modul

Jika memilih untuk menghapus modul dengan pengaturan di web.config, buka kunci modul dan buka kunci <modules> bagian web.config terlebih dahulu:

  1. Buka kunci modul di tingkat server. Pilih server IIS di bilah samping IIS Manager Koneksi ions. Buka Modul di area IIS. Pilih modul dalam daftar. Di bar samping Tindakan di sebelah kanan, pilih Buka kunci. Jika entri tindakan untuk modul muncul sebagai Kunci, modul sudah tidak terkunci, dan tidak ada tindakan yang diperlukan. Buka kunci modul sebanyak yang Anda rencanakan untuk dihapus dari web.config nanti.

  2. Sebarkan aplikasi tanpa <modules> bagian di web.config. Jika aplikasi disebarkan dengan web.config yang berisi <modules> bagian tanpa membuka kunci bagian terlebih dahulu di Manajer IIS, Configuration Manager melemparkan pengecualian saat mencoba membuka kunci bagian. Oleh karena itu, sebarkan aplikasi tanpa <modules> bagian.

  3. Buka kunci bagian <modules>web.config. Di bilah samping Koneksi ions, pilih situs web di Situs. Di area Manajemen, buka Editor Konfigurasi. Gunakan kontrol navigasi untuk memilih bagian system.webServer/modules . Di bar samping Tindakan di sebelah kanan, pilih untuk Membuka kunci bagian. Jika entri tindakan untuk bagian modul muncul sebagai Kunci Bagian, bagian modul sudah dibuka kuncinya, dan tidak ada tindakan yang diperlukan.

  4. <modules> Tambahkan bagian ke file web.config lokal aplikasi dengan <remove> elemen untuk menghapus modul dari aplikasi. Tambahkan beberapa <remove> elemen untuk menghapus beberapa modul. Jika perubahan web.config dilakukan di server, segera buat perubahan yang sama pada file web.config proyek secara lokal. Menghapus modul menggunakan pendekatan ini tidak memengaruhi penggunaan modul dengan aplikasi lain di server.

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

Untuk menambahkan atau menghapus modul untuk IIS Express menggunakan web.config, ubah applicationHost.config untuk membuka kunci bagian <modules> :

  1. Buka {APPLICATION ROOT}\.vs\config\applicationhost.config.

  2. <section> Temukan elemen untuk modul IIS dan ubah overrideModeDefault dari Deny ke Allow:

    <section name="modules"
             allowDefinition="MachineToApplication"
             overrideModeDefault="Allow" />
    
  3. Temukan bagian .<location path="" overrideMode="Allow"><system.webServer><modules> Untuk modul apa pun yang ingin Anda hapus, atur lockItem dari true ke false. Dalam contoh berikut, Modul CGI tidak terkunci:

    <add name="CgiModule" lockItem="false" />
    
  4. <modules> Setelah bagian dan modul individual tidak terkunci, Anda bebas untuk menambahkan atau menghapus modul IIS menggunakan file web.config aplikasi untuk menjalankan aplikasi di IIS Express.

Modul IIS juga dapat dihapus dengan Appcmd.exe. MODULE_NAME Berikan dan APPLICATION_NAME dalam perintah:

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

Misalnya, hapus DynamicCompressionModule dari Situs Web Default:

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

Konfigurasi modul minimum

Satu-satunya modul yang diperlukan untuk menjalankan aplikasi ASP.NET Core adalah Modul Autentikasi Anonim dan Modul Inti ASP.NET.

Modul Penembolokan URI (UriCacheModule) memungkinkan IIS untuk menyimpan konfigurasi situs web di tingkat URL. Tanpa modul ini, IIS harus membaca dan mengurai konfigurasi pada setiap permintaan, bahkan ketika URL yang sama berulang kali diminta. Mengurai konfigurasi setiap permintaan menghasilkan penalti performa yang signifikan. Meskipun Modul Penembolokan URI tidak benar-benar diperlukan agar aplikasi ASP.NET Core yang dihosting berjalan, sebaiknya Modul Penembolokan URI diaktifkan untuk semua penyebaran inti ASP.NET.

Modul Penembolokan HTTP (HttpCacheModule) mengimplementasikan cache output IIS dan juga logika untuk penembolokan item di cache HTTP.sys. Tanpa modul ini, konten tidak lagi di-cache dalam mode kernel, dan profil cache diabaikan. Menghapus Modul Penembolokan HTTP biasanya memiliki efek buruk pada performa dan penggunaan sumber daya. Meskipun Modul Penembolokan HTTP tidak benar-benar diperlukan agar aplikasi ASP.NET Core yang dihosting berjalan, sebaiknya Modul Penembolokan HTTP diaktifkan untuk semua penyebaran inti ASP.NET.

Sumber Daya Tambahan: