Host ASP.NET Core di Windows dengan IIS

Internet Information Services (IIS) adalah Server Web yang fleksibel, aman, dan dapat dikelola untuk menghosting aplikasi web, termasuk ASP.NET Core.

Platform yang didukung

Sistem operasi berikut didukung:

  • Windows 7 atau yang lebih baru
  • Windows Server 2012 R2 atau versi lebih baru

Aplikasi yang diterbitkan untuk penyebaran 32-bit (x86) atau 64-bit (x64) didukung. Sebarkan aplikasi 32-bit dengan .NET Core SDK 32-bit (x86) kecuali aplikasi:

  • Membutuhkan ruang alamat memori virtual yang lebih besar yang tersedia untuk aplikasi 64-bit.
  • Membutuhkan ukuran tumpukan IIS yang lebih besar.
  • Memiliki dependensi asli 64-bit.

Menginstal ASP.NET Core Module/Hosting Bundle

Unduh alat penginstal menggunakan tautan berikut:

Penginstal Bundel .NET Core Hosting saat ini (unduhan langsung)

Untuk petunjuk detail selengkapnya tentang cara menginstal Modul ASP.NET Core, atau menginstal versi yang berbeda, lihat Menginstal Bundel Hosting .NET Core.

Mulai

Untuk mulai menghosting situs web di IIS, lihat panduan memulai kami.

Untuk mulai menghosting situs web di Azure App Services, lihat panduan penyebaran ke Azure App Service kami.

Konfigurasi

Untuk panduan konfigurasi, lihat Konfigurasi tingkat lanjut.

Sumber daya penyebaran untuk administrator IIS

Daur ulang yang tumpang tindih

Secara umum, sebaiknya gunakan pola seperti penyebaran biru-hijau untuk penyebaran zero-downtime. Fitur seperti bantuan Daur Ulang yang Tumpang Tindih, tetapi tidak menjamin bahwa Anda dapat melakukan penyebaran waktu henti nol. Untuk informasi selengkapnya, lihat masalah GitHub ini.

Sertifikat klien opsional

Untuk informasi tentang aplikasi yang harus melindungi subset aplikasi dengan sertifikat, lihat Sertifikat klien opsional.

Sumber Daya Tambahan:

Untuk pengalaman tutorial tentang menerbitkan aplikasi ASP.NET Core ke server IIS, lihat Menerbitkan aplikasi ASP.NET Core ke IIS.

Menginstal Bundel Hosting .NET Core

Sistem operasi yang didukung

Sistem operasi berikut didukung:

  • Windows 7 atau yang lebih baru
  • Windows Server 2012 R2 atau versi lebih baru

HTTP.sys server (sebelumnya disebut WebListener) tidak berfungsi dalam konfigurasi proksi terbalik dengan IIS. Kestrel Gunakan server.

Untuk informasi tentang hosting di Azure, lihat Menyebarkan aplikasi ASP.NET Core ke Azure App Service.

Untuk panduan pemecahan masalah, lihat Memecahkan masalah dan men-debug ASP.NET proyek Inti.

Platform yang didukung

Aplikasi yang diterbitkan untuk penyebaran 32-bit (x86) atau 64-bit (x64) didukung. Sebarkan aplikasi 32-bit dengan .NET Core SDK 32-bit (x86) kecuali aplikasi:

  • Membutuhkan ruang alamat memori virtual yang lebih besar yang tersedia untuk aplikasi 64-bit.
  • Membutuhkan ukuran tumpukan IIS yang lebih besar.
  • Memiliki dependensi asli 64-bit.

Aplikasi yang diterbitkan untuk 32-bit (x86) harus mengaktifkan 32-bit untuk Kumpulan Aplikasi IIS mereka. Untuk informasi selengkapnya, lihat bagian Membuat situs IIS .

Gunakan .NET Core SDK 64-bit (x64) untuk menerbitkan aplikasi 64-bit. Runtime 64-bit harus ada pada sistem host.

Model Hosting

Model hosting dalam proses

Menggunakan hosting dalam proses, aplikasi ASP.NET Core berjalan dalam proses yang sama dengan proses pekerja IIS-nya. Hosting dalam proses memberikan peningkatan performa melalui hosting di luar proses karena permintaan tidak diproksikan melalui adaptor loopback, antarmuka jaringan yang mengembalikan lalu lintas jaringan keluar kembali ke komputer yang sama. IIS menangani manajemen proses dengan Windows Process Activation Service (WAS).

Modul ASP.NET Core:

  • Melakukan inisialisasi aplikasi.
    • Memuat CoreCLR.
    • Panggilan Program.Main.
  • Menangani masa pakai permintaan asli IIS.

Diagram berikut mengilustrasikan hubungan antara IIS, modul ASP.NET Core, dan aplikasi yang dihosting dalam proses:

ASP.NET Modul Inti dalam skenario hosting dalam proses

  1. Permintaan tiba dari web ke mode kernel HTTP.sys driver.
  2. Driver merutekan permintaan asli ke IIS pada port yang dikonfigurasi situs web, biasanya 80 (HTTP) atau 443 (HTTPS).
  3. Modul ASP.NET Core menerima permintaan asli dan meneruskannya ke Server HTTP IIS (IISHttpServer). Server HTTP IIS adalah implementasi server dalam proses untuk IIS yang mengonversi permintaan dari asli ke terkelola.

Setelah Server HTTP IIS memproses permintaan:

  1. Permintaan dikirim ke alur middleware ASP.NET Core.
  2. Alur middleware menangani permintaan dan meneruskannya sebagai HttpContext instans ke logika aplikasi.
  3. Respons aplikasi diteruskan kembali ke IIS melalui IIS HTTP Server.
  4. IIS mengirimkan respons ke klien yang memulai permintaan.

Hosting dalam proses adalah keikutsertaan untuk aplikasi yang ada. Templat web ASP.NET Core menggunakan model hosting dalam proses.

CreateDefaultBuilder menambahkan instans IServer dengan memanggil metode untuk mem-boot UseIISCoreCLR dan menghosting aplikasi di dalam proses pekerja IIS (w3wp.exe atau iisexpress.exe). Pengujian performa menunjukkan bahwa menghosting aplikasi .NET Core dalam proses memberikan throughput permintaan yang jauh lebih tinggi dibandingkan dengan menghosting aplikasi di luar proses dan memproksi permintaan ke Kestrel.

Aplikasi yang diterbitkan sebagai file tunggal yang dapat dieksekusi tidak dapat dimuat oleh model hosting dalam proses.

Model hosting di luar proses

Karena aplikasi ASP.NET Core berjalan dalam proses yang terpisah dari proses pekerja IIS, ASP.NET Core Module menangani manajemen proses. Modul memulai proses untuk aplikasi ASP.NET Core saat permintaan pertama tiba dan memulai ulang aplikasi jika dimatikan atau crash. Ini pada dasarnya adalah perilaku yang sama seperti yang terlihat dengan aplikasi yang berjalan dalam proses yang dikelola oleh Windows Process Activation Service (WAS).

Diagram berikut mengilustrasikan hubungan antara IIS, modul ASP.NET Core, dan aplikasi yang dihosting di luar proses:

ASP.NET Modul Inti dalam skenario hosting di luar proses

  1. Permintaan tiba dari web ke mode kernel HTTP.sys driver.
  2. Driver merutekan permintaan ke IIS pada port yang dikonfigurasi situs web. Port yang dikonfigurasi biasanya 80 (HTTP) atau 443 (HTTPS).
  3. Modul meneruskan permintaan ke Kestrel pada port acak untuk aplikasi. Port acak bukan 80 atau 443.

Modul ASP.NET Core menentukan port melalui variabel lingkungan saat startup. Ekstensi UseIISIntegration mengonfigurasi server untuk mendengarkan di http://localhost:{PORT}. Pemeriksaan tambahan dilakukan, dan permintaan yang tidak berasal dari modul ditolak. Modul tidak mendukung penerusan HTTPS. Permintaan diteruskan melalui HTTP bahkan jika diterima oleh IIS melalui HTTPS.

Setelah Kestrel mengambil permintaan dari modul, permintaan diteruskan ke alur middleware ASP.NET Core. Alur middleware menangani permintaan dan meneruskannya sebagai HttpContext instans ke logika aplikasi. Middleware yang ditambahkan oleh Integrasi IIS memperbarui skema, IP jarak jauh, dan pathbase ke akun untuk meneruskan permintaan ke Kestrel. Respons aplikasi diteruskan kembali ke IIS, yang meneruskannya kembali ke klien HTTP yang memulai permintaan.

Untuk panduan konfigurasi Modul Inti ASP.NET, lihat ASP.NET Core Module (ANCM) untuk IIS.

Untuk informasi selengkapnya tentang hosting, lihat Host di ASP.NET Core.

Konfigurasi aplikasi

Mengaktifkan komponen IISIntegration

Saat membangun host di CreateHostBuilder (Program.cs), panggil CreateDefaultBuilder untuk mengaktifkan integrasi IIS:

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

Untuk informasi selengkapnya tentang CreateDefaultBuilder, lihat Host Generik .NET di ASP.NET Core.

Opsi IIS

Model hosting dalam proses

Untuk mengonfigurasi opsi IIS Server, sertakan konfigurasi layanan untuk IISServerOptions di ConfigureServices. Contoh berikut menonaktifkan AutomaticAuthentication:

services.Configure<IISServerOptions>(options => 
{
    options.AutomaticAuthentication = false;
});
Opsi Default Pengaturan
AutomaticAuthentication true Jika true, IIS Server mengatur yang HttpContext.Userdiautentikasi oleh Autentikasi Windows. Jika false, server hanya menyediakan identitas untuk HttpContext.User dan merespons tantangan ketika diminta secara eksplisit oleh AuthenticationScheme. Autentikasi Windows harus diaktifkan di IIS agar AutomaticAuthentication berfungsi. Untuk informasi selengkapnya, lihat Autentikasi Windows.
AuthenticationDisplayName null Mengatur nama tampilan yang ditampilkan kepada pengguna pada halaman masuk.
AllowSynchronousIO false Apakah I/O sinkron diizinkan untuk HttpContext.Request dan HttpContext.Response.
MaxRequestBodySize 30000000 Mendapatkan atau mengatur ukuran isi permintaan maks untuk HttpRequest. Perhatikan bahwa IIS sendiri memiliki batas maxAllowedContentLength yang akan diproses sebelum MaxRequestBodySize ditetapkan dalam IISServerOptions. Mengubah MaxRequestBodySize tidak akan memengaruhi maxAllowedContentLength. Untuk menambah maxAllowedContentLength, tambahkan entri di web.config untuk diatur maxAllowedContentLength ke nilai yang lebih tinggi. Untuk detail selengkapnya, lihat Konfigurasi.

Model hosting di luar proses

Untuk mengonfigurasi opsi IIS, sertakan konfigurasi layanan untuk IISOptions di ConfigureServices. Contoh berikut mencegah aplikasi HttpContext.Connection.ClientCertificatemengisi :

services.Configure<IISOptions>(options => 
{
    options.ForwardClientCertificate = false;
});
Opsi Default Pengaturan
AutomaticAuthentication true Jika true, Middleware Integrasi IIS mengatur yang HttpContext.Userdiautentikasi oleh Autentikasi Windows. Jika false, middleware hanya menyediakan identitas untuk HttpContext.User dan merespons tantangan ketika diminta secara eksplisit oleh AuthenticationScheme. Autentikasi Windows harus diaktifkan di IIS agar AutomaticAuthentication berfungsi. Untuk informasi selengkapnya, lihat topik Autentikasi Windows .
AuthenticationDisplayName null Mengatur nama tampilan yang ditampilkan kepada pengguna pada halaman masuk.
ForwardClientCertificate true Jika true dan MS-ASPNETCORE-CLIENTCERT header permintaan ada, diisi HttpContext.Connection.ClientCertificate .

Skenario server proksi dan load balancer

Middleware Integrasi IIS dan Modul ASP.NET Core dikonfigurasi untuk meneruskan:

  • Skema (HTTP/HTTPS).
  • Alamat IP jarak jauh tempat permintaan berasal.

Middleware Integrasi IIS mengonfigurasi Middleware Header yang Diteruskan.

Konfigurasi tambahan mungkin diperlukan untuk aplikasi yang dihosting di belakang server proksi tambahan dan load balancer. Untuk informasi selengkapnya, lihat Mengonfigurasi ASP.NET Core untuk bekerja dengan server proxy dan memuat penyeimbang.

web.config File

File web.config mengonfigurasi Modul ASP.NET Core. Membuat, mengubah, dan menerbitkan file ditangani web.config oleh target MSBuild (_TransformWebConfig) saat proyek diterbitkan. Target ini ada di target Web SDK (Microsoft.NET.Sdk.Web). SDK diatur di bagian atas file proyek:

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

web.config Jika file tidak ada dalam proyek, file dibuat dengan benar processPath dan arguments untuk mengonfigurasi Modul inti ASP.NET dan dipindahkan ke output yang diterbitkan.

web.config Jika file ada dalam proyek, file diubah dengan benar processPath dan arguments untuk mengonfigurasi Modul inti ASP.NET dan dipindahkan ke output yang diterbitkan. Transformasi tidak mengubah pengaturan konfigurasi IIS dalam file.

File web.config dapat menyediakan pengaturan konfigurasi IIS tambahan yang mengontrol modul IIS aktif. Untuk informasi tentang modul IIS yang mampu memproses permintaan dengan aplikasi ASP.NET Core, lihat topik modul IIS .

Untuk mencegah Web SDK mengubah web.config file, gunakan <IsTransformWebConfigDisabled> properti dalam file proyek:

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

Saat menonaktifkan Web SDK agar tidak mengubah file, processPath dan arguments harus diatur secara manual oleh pengembang. Untuk informasi selengkapnya, lihat ASP.NET Core Module (ANCM) untuk IIS.

web.config lokasi file

Untuk menyiapkan Modul ASP.NET Core dengan benar, web.config file harus ada di jalur akar konten (biasanya jalur dasar aplikasi) dari aplikasi yang disebarkan. Ini adalah lokasi yang sama dengan jalur fisik situs web yang disediakan untuk IIS. File web.config diperlukan di akar aplikasi untuk mengaktifkan penerbitan beberapa aplikasi menggunakan Web Deploy.

File sensitif ada di jalur fisik aplikasi, seperti {ASSEMBLY}.runtimeconfig.json, {ASSEMBLY}.xml (komentar Dokumentasi XML), dan {ASSEMBLY}.deps.json, di mana tempat penampung {ASSEMBLY} adalah nama rakitan. web.config Ketika file ada dan situs dimulai secara normal, IIS tidak melayani file sensitif ini jika diminta. web.config Jika file hilang, bernama salah, atau tidak dapat mengonfigurasi situs untuk startup normal, IIS dapat melayani file sensitif secara publik.

File web.config harus ada dalam penyebaran setiap saat, dinamai dengan benar, dan dapat mengonfigurasi situs untuk memulai normal. Jangan pernah menghapus web.config file dari penyebaran produksi.

Mengubah web.config

Jika Anda perlu mengubah web.config publikasi, lihat Mengubah web.config. Anda mungkin perlu mengubah web.config penerbitan untuk mengatur variabel lingkungan berdasarkan konfigurasi, profil, atau lingkungan.

Konfigurasi IIS

Sistem operasi Windows Server

Aktifkan peran server Server Web (IIS) dan buat layanan peran.

  1. Gunakan wizard Tambahkan Peran dan Fitur dari menu Kelola atau tautan di Manajer Server. Pada langkah Peran Server, centang kotak untuk Server Web (IIS).

    Peran IIS Server Web dipilih di langkah Pilih peran server.

  2. Setelah langkah Fitur , langkah Layanan peran dimuat untuk Server Web (IIS). Pilih layanan peran IIS yang diinginkan atau terima layanan peran default yang disediakan.

    Layanan peran default dipilih di langkah Pilih layanan peran.

    Autentikasi Windows (Opsional)
    Untuk mengaktifkan Autentikasi Windows, perluas simpul berikut:KeamananServer> Web. Pilih fitur Autentikasi Windows . Untuk informasi selengkapnya, lihat Autentikasi <windowsAuthentication>Windows dan Mengonfigurasi autentikasi Windows.

    WebSocket (Opsional)
    WebSockets didukung dengan ASP.NET Core 1.1 atau yang lebih baru. Untuk mengaktifkan WebSocket, perluas simpul berikut:Pengembangan AplikasiServer> Web. Pilih fitur Protokol WebSocket . Untuk informasi selengkapnya, lihat WebSocket.

  3. Lanjutkan melalui langkah Konfirmasi untuk menginstal peran dan layanan server web. Menghidupkan ulang server/IIS tidak diperlukan setelah menginstal peran Server Web (IIS ).

Sistem operasi desktop Windows

Aktifkan Konsol Manajemen IIS dan World Wide Web Services.

  1. Navigasi ke Panel Kontrol>Program>program dan fitur>Aktifkan atau nonaktifkan fitur Windows (sisi kiri layar).

  2. Buka simpul Layanan Informasi Internet . Buka simpul Alat Manajemen Web .

  3. Centang kotak untuk Konsol Manajemen IIS.

  4. Centang kotak untuk World Wide Web Services.

  5. Terima fitur default untuk World Wide Web Services atau sesuaikan fitur IIS.

    Autentikasi Windows (Opsional)
    Untuk mengaktifkan Autentikasi Windows, perluas simpul berikut:KeamananWorld Wide Web Services>. Pilih fitur Autentikasi Windows . Untuk informasi selengkapnya, lihat Windows Authentication <windowsAuthentication> dan Mengonfigurasi autentikasi Windows.

    WebSocket (Opsional)
    WebSockets didukung dengan ASP.NET Core 1.1 atau yang lebih baru. Untuk mengaktifkan WebSocket, perluas simpul berikut:Fitur Pengembangan AplikasiWorld Wide Web Services>. Pilih fitur Protokol WebSocket . Untuk informasi selengkapnya, lihat WebSocket.

  6. Jika penginstalan IIS memerlukan mulai ulang, mulai ulang sistem.

Konsol Manajemen IIS dan Layanan World Wide Web dipilih di Fitur Windows.

Instal Bundel Hosting .NET Core

Instal .NET Core Hosting Bundle pada sistem hosting. Bundel menginstal .NET Core Runtime, .NET Core Library, dan modul ASP.NET Core. Modul ini memungkinkan aplikasi ASP.NET Core berjalan di belakang IIS.

Penting

Jika Bundel Hosting diinstal sebelum IIS, penginstalan bundel harus diperbaiki. Jalankan penginstal Bundel Hosting lagi setelah menginstal IIS.

Jika Bundel Hosting diinstal setelah menginstal versi 64-bit (x64) dari .NET Core, SDK mungkin tampak hilang (Tidak ada SDK .NET Core yang terdeteksi). Untuk mengatasi masalah ini, lihat Memecahkan masalah dan men-debug proyek ASP.NET Core.

Unduhan langsung (versi saat ini)

Unduh alat penginstal menggunakan tautan berikut:

Penginstal Bundel Hosting Inti .NET saat ini (unduhan langsung)

Versi alat penginstal yang lebih lama

Untuk mendapatkan versi penginstal yang lebih lama:

  1. Navigasi ke halaman Unduh .NET Core .
  2. Pilih versi .NET Core yang diinginkan.
  3. Di kolom Jalankan aplikasi - Runtime , temukan baris versi runtime .NET Core yang diinginkan.
  4. Unduh alat penginstal menggunakan tautan Bundel Hosting .

Peringatan

Beberapa penginstal berisi versi rilis yang telah mencapai akhir masa pakainya (EOL) dan tidak lagi didukung oleh Microsoft. Untuk informasi selengkapnya, lihat kebijakan dukungan.

Menginstal Bundel Hosting

  1. Jalankan alat penginstal di server. Parameter berikut tersedia saat menjalankan alat penginstal dari shell perintah administrator:

    • OPT_NO_ANCM=1: Lewati penginstalan Modul ASP.NET Core.
    • OPT_NO_RUNTIME=1: Lewati penginstalan runtime .NET Core. Digunakan ketika server hanya menghosting penyebaran mandiri (SCD).
    • OPT_NO_SHAREDFX=1: Lewati penginstalan ASP.NET Shared Framework (ASP.NET runtime). Digunakan ketika server hanya menghosting penyebaran mandiri (SCD).
    • OPT_NO_X86=1: Lewati penginstalan runtime x86. Gunakan parameter ini ketika Anda tahu bahwa Anda tidak akan menghosting aplikasi 32-bit. Jika ada kemungkinan Anda akan menghosting aplikasi 32-bit dan 64-bit di masa mendatang, jangan gunakan parameter ini dan instal kedua runtime.
    • OPT_NO_SHARED_CONFIG_CHECK=1: Nonaktifkan pemeriksaan untuk menggunakan Konfigurasi Bersama IIS saat konfigurasi bersama (applicationHost.config) berada di komputer yang sama dengan penginstalan IIS. Hanya tersedia untuk penginstal Bundler Hosting ASP.NET Core 2.2 atau yang lebih baru. Untuk informasi selengkapnya, lihat ASP.NET Core Module (ANCM) untuk IIS.
  2. Menghidupkan ulang IIS mengambil perubahan pada PATH sistem, yang merupakan variabel lingkungan, yang dibuat oleh alat penginstal. Untuk memulai ulang server web, hentikan Layanan Aktivasi Proses Windows (WAS) lalu mulai ulang Layanan Penerbitan World Wide Web (W3SVC). Mulai ulang sistem atau jalankan perintah berikut dalam shell perintah yang ditingkatkan:

    net stop was /y
    net start w3svc
    

ASP.NET Core tidak mengadopsi perilaku roll-forward untuk rilis patch paket kerangka kerja bersama. Setelah meningkatkan kerangka kerja bersama dengan menginstal bundel hosting baru, mulai ulang sistem atau jalankan perintah berikut dalam shell perintah yang ditinggikan:

net stop was /y
net start w3svc

Catatan

Untuk informasi tentang Konfigurasi Bersama IIS, lihat modul ASP.NET Core dengan Konfigurasi Bersama IIS.

Menginstal Web Deploy saat menerbitkan dengan Visual Studio

Saat menyebarkan aplikasi ke server dengan Web Deploy, instal versi terbaru Web Deploy di server. Untuk menginstal Web Deploy, gunakan Web Platform Installer (WebPI) atau dapatkan alat penginstal langsung dari Pusat Unduhan Microsoft. Metode yang disukai adalah menggunakan WebPI. WebPI menawarkan penyiapan mandiri dan konfigurasi untuk penyedia hosting.

Membuat situs IIS

  1. Pada sistem hosting, buat folder untuk berisi folder dan file aplikasi yang diterbitkan. Pada langkah berikut, jalur folder disediakan untuk IIS sebagai jalur fisik ke aplikasi. Untuk informasi selengkapnya tentang folder penyebaran aplikasi dan tata letak file, lihat struktur direktori ASP.NET Core.

  2. Di Manajer IIS, buka simpul server di panel Koneksi . Klik kanan folder Situs . Pilih Tambahkan Situs Web dari menu kontekstual.

  3. Berikan Nama situs dan atur jalur Fisik ke folder penyebaran aplikasi. Berikan konfigurasi Pengikatan dan buat situs web dengan memilih OK:

    Berikan Nama situs, jalur fisik, dan Nama host di langkah Tambahkan Situs Web.

    Peringatan

    Pengikatan kartubebas tingkat atas (http://*:80/ dan http://+:80) tidak boleh digunakan. Pengikatan kartubebas tingkat atas dapat membuka aplikasi Anda untuk kerentanan keamanan. Ini berlaku untuk wildcard yang kuat dan lemah. Gunakan nama host eksplisit daripada kartubebas. Pengikatan wildcard subdomain (misalnya, *.mysub.com) tidak memiliki risiko keamanan ini jika Anda mengontrol seluruh domain induk (dibandingkan *.comdengan , yang rentan). Lihat rfc7230 section-5.4 untuk informasi selengkapnya.

  4. Di bawah simpul server, pilih Kumpulan Aplikasi.

  5. Klik kanan kumpulan aplikasi situs dan pilih Pengaturan Dasar dari menu kontekstual.

  6. Di jendela Edit Kumpulan Aplikasi , atur versi .NET CLR ke Tanpa Kode Terkelola:

    Atur Tanpa Kode Terkelola untuk versi .NET CLR.

    ASP.NET Core berjalan dalam proses terpisah dan mengelola runtime. ASP.NET Core tidak mengandalkan pemuatan CLR desktop (.NET CLR). Core Common Language Runtime (CoreCLR) untuk .NET Core di-boot untuk menghosting aplikasi dalam proses pekerja. Mengatur versi .NET CLR ke Tanpa Kode Terkelola bersifat opsional tetapi direkomendasikan.

  7. ASP.NET Core 2.2 atau yang lebih baru:

    • Untuk penyebaran mandiri 32-bit (x86) yang diterbitkan dengan SDK 32-bit yang menggunakan model hosting dalam proses, aktifkan Kumpulan Aplikasi untuk 32-bit. Di Manajer IIS, navigasikan ke Kumpulan Aplikasi di bar samping Koneksi . Pilih Kumpulan Aplikasi aplikasi. Di bar samping Tindakan , pilih Pengaturan Tingkat Lanjut. Atur Aktifkan Aplikasi 32-Bit ke True.

    • Untuk penyebaran mandiri 64-bit (x64) yang menggunakan model hosting dalam proses, nonaktifkan kumpulan aplikasi untuk proses 32-bit (x86). Di Manajer IIS, navigasikan ke Kumpulan Aplikasi di bar samping Koneksi . Pilih Kumpulan Aplikasi aplikasi. Di bar samping Tindakan , pilih Pengaturan Tingkat Lanjut. Atur Aktifkan Aplikasi 32-Bit ke False.

  8. Konfirmasikan identitas model proses memiliki izin yang tepat.

    Jika identitas default kumpulan aplikasi (Model>Identity Proses) diubah dari ApplicationPoolIdentity ke identitas lain, verifikasi bahwa identitas baru memiliki izin yang diperlukan untuk mengakses folder aplikasi, database, dan sumber daya lain yang diperlukan. Misalnya, kumpulan aplikasi memerlukan akses baca dan tulis ke folder tempat aplikasi membaca dan menulis file.

Konfigurasi Autentikasi Windows (Opsional)
Untuk informasi selengkapnya, lihat Mengonfigurasi autentikasi Windows.

Menerapkan aplikasi

Sebarkan aplikasi ke folder jalur Fisik IIS yang dibuat di bagian Buat situs IIS . Web Deploy adalah mekanisme penyebaran yang direkomendasikan, tetapi ada beberapa opsi untuk memindahkan aplikasi dari folder proyek publish ke folder penyebaran sistem hosting.

Web Deploy dengan Visual Studio

Lihat topik penerbitan profil visual Studio untuk penyebaran aplikasi ASP.NET Core untuk mempelajari cara membuat profil penerbitan untuk digunakan dengan Web Deploy. Jika penyedia hosting menyediakan Profil Penerbitan atau dukungan untuk membuatnya, unduh profil mereka dan impor menggunakan dialog Terbitkan Visual Studio:

Terbitkan halaman dialog

Web Deploy di luar Visual Studio

Web Deploy juga dapat digunakan di luar Visual Studio dari baris perintah. Untuk informasi selengkapnya, lihat Alat Penyebaran Web.

Alternatif untuk Web Deploy

Gunakan salah satu dari beberapa metode untuk memindahkan aplikasi ke sistem hosting, seperti salinan manual, Xcopy, Robocopy, atau PowerShell.

Untuk informasi selengkapnya tentang penyebaran ASP.NET Core ke IIS, lihat bagian Sumber daya penyebaran untuk administrator IIS .

Telusuri situs web

Setelah aplikasi disebarkan ke sistem hosting, buat permintaan ke salah satu titik akhir publik aplikasi.

Dalam contoh berikut, situs terikat dengan namawww.mysite.com Host IIS di Port80. Permintaan dibuat untuk http://www.mysite.com:

Browser Microsoft Edge telah memuat halaman startup IIS.

File penyebaran terkunci

File di folder penyebaran dikunci saat aplikasi berjalan. File terkunci tidak dapat ditimpa selama penyebaran. Untuk merilis file terkunci dalam penyebaran, hentikan kumpulan aplikasi menggunakan salah satu pendekatan berikut:

  • Gunakan Web Deploy dan referensi Microsoft.NET.Sdk.Web dalam file proyek. File app_offline.htm ditempatkan di akar direktori aplikasi web. Saat file ada, modul ASP.NET Core dengan lancar mematikan aplikasi dan melayani app_offline.htm file selama penyebaran. Untuk informasi selengkapnya, lihat referensi konfigurasi Modul ASP.NET Core.

  • Hentikan kumpulan aplikasi secara manual di Manajer IIS di server.

  • Gunakan PowerShell untuk menghilangkan app_offline.htm (memerlukan PowerShell 5 atau yang lebih baru):

    $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
    

Perlindungan data

Tumpukan ASP.NET Core Data Protection digunakan oleh beberapa middleware ASP.NET Core, termasuk middleware yang digunakan dalam autentikasi. Bahkan jika API Perlindungan Data tidak dipanggil oleh kode pengguna, perlindungan data harus dikonfigurasi dengan skrip penyebaran atau dalam kode pengguna untuk membuat penyimpanan kunci kriptografi persisten. Jika perlindungan data tidak dikonfigurasi, kunci disimpan dalam memori dan dibuang saat aplikasi dimulai ulang.

Jika cincin kunci disimpan dalam memori saat aplikasi dimulai ulang:

  • Semua cookietoken autentikasi berbasis tidak valid.
  • Pengguna diharuskan masuk lagi pada permintaan berikutnya.
  • Data apa pun yang dilindungi dengan cincin kunci tidak dapat lagi didekripsi. Ini mungkin termasuk token CSRF dan ASP.NET Core MVC TempData cookies.

Untuk mengonfigurasi perlindungan data di bawah IIS untuk mempertahankan cincin kunci, gunakan salah satu pendekatan berikut:

  • Membuat Kunci Registri Perlindungan Data

    Kunci perlindungan data yang digunakan oleh aplikasi ASP.NET Core disimpan di registri di luar aplikasi. Untuk mempertahankan kunci untuk aplikasi tertentu, buat kunci registri untuk kumpulan aplikasi.

    Untuk penginstalan IIS non-webfarm mandiri, skrip PowerShell Provision-AutoGenKeys.ps1 Perlindungan Data dapat digunakan untuk setiap kumpulan aplikasi yang digunakan dengan aplikasi ASP.NET Core. Skrip ini membuat kunci registri di registri HKLM yang hanya dapat diakses oleh akun proses pekerja dari kumpulan aplikasi. Kunci dienkripsi saat tidak aktif menggunakan DPAPI dengan kunci di seluruh komputer.

    Dalam skenario farm web, aplikasi dapat dikonfigurasi untuk menggunakan jalur UNC untuk menyimpan cincin kunci perlindungan datanya. Secara default, kunci perlindungan data tidak dienkripsi. Pastikan bahwa izin file untuk berbagi jaringan terbatas pada akun Windows yang dijalankan aplikasi. Sertifikat X509 dapat digunakan untuk melindungi kunci saat tidak aktif. Pertimbangkan mekanisme untuk memungkinkan pengguna mengunggah sertifikat: Tempatkan sertifikat ke penyimpanan sertifikat tepercaya pengguna dan pastikan sertifikat tersedia di semua komputer tempat aplikasi pengguna berjalan. Lihat Mengonfigurasi ASP.NET Core Data Protection untuk detailnya.

  • Mengonfigurasi Kumpulan Aplikasi IIS untuk memuat profil pengguna

    Pengaturan ini ada di bagian Model Proses di bawah Pengaturan Tingkat Lanjut untuk kumpulan aplikasi. Atur Muat Profil Pengguna ke True. Saat diatur ke True, kunci disimpan di direktori profil pengguna dan dilindungi menggunakan DPAPI dengan kunci khusus untuk akun pengguna. Kunci dipertahankan ke folder %LOCALAPPDATA%/ASP.NET/DataProtection-Keys .

    Atribut setProfileEnvironment kumpulan aplikasi juga harus diaktifkan. Nilai default setProfileEnvironment adalah true. Dalam beberapa skenario (misalnya, OS Windows), setProfileEnvironment diatur ke false. Jika kunci tidak disimpan di direktori profil pengguna seperti yang diharapkan:

    1. Navigasi ke folder %windir%/system32/inetsrv/config .
    2. Buka file applicationHost.config .
    3. Temukan <system.applicationHost><applicationPools><applicationPoolDefaults><processModel> elemennya.
    4. Konfirmasikan bahwa setProfileEnvironment atribut tidak ada, yang default nilainya ke true, atau secara eksplisit mengatur nilai atribut ke true.
  • Gunakan sistem file sebagai penyimpanan cincin kunci

    Sesuaikan kode aplikasi untuk menggunakan sistem file sebagai penyimpanan cincin kunci. Gunakan sertifikat X509 untuk melindungi cincin kunci dan pastikan sertifikat adalah sertifikat tepercaya. Jika sertifikat ditandatangani sendiri, letakkan sertifikat di penyimpanan Akar Tepercaya.

    Saat menggunakan IIS di farm web:

    • Gunakan berbagi file yang dapat diakses semua komputer.
    • Sebarkan sertifikat X509 ke setiap komputer. Mengonfigurasi perlindungan data dalam kode.
  • Mengatur kebijakan di seluruh komputer untuk perlindungan data

    Sistem perlindungan data memiliki dukungan terbatas untuk mengatur kebijakan seluruh komputer default untuk semua aplikasi yang menggunakan API Perlindungan Data. Untuk informasi selengkapnya, lihat ASP.NET Gambaran Umum Perlindungan Data Inti.

Direktori Virtual

Direktori Virtual IIS tidak didukung dengan aplikasi ASP.NET Core. Aplikasi dapat dihosting sebagai sub-aplikasi.

Sub-aplikasi

Aplikasi ASP.NET Core dapat dihosting sebagai sub-aplikasi IIS (sub-aplikasi). Jalur sub-aplikasi menjadi bagian dari URL aplikasi akar.

Tautan aset statis dalam sub-aplikasi harus menggunakan notasi tilde-slash (~/). Notasi Tilde-slash memicu Tag Helper untuk menambahkan pathbase sub-app ke tautan relatif yang dirender. Untuk sub-aplikasi di , gambar yang ditautkan /subapp_pathdengan src="~/image.png" dirender sebagai src="/subapp_path/image.png". Middleware File Statis aplikasi akar tidak memproses permintaan file statis. Permintaan diproses oleh Middleware File Statis sub-aplikasi.

Jika atribut aset src statis diatur ke jalur absolut (misalnya, src="/image.png"), tautan dirender tanpa basis jalur sub-aplikasi. Middleware File Statis aplikasi akar mencoba melayani aset dari akar web aplikasi root, yang menghasilkan respons 404 - Tidak Ditemukan kecuali aset statis tersedia dari aplikasi root.

Untuk menghosting aplikasi ASP.NET Core sebagai sub-aplikasi di bawah aplikasi ASP.NET Core lainnya:

  1. Buat kumpulan aplikasi untuk sub-aplikasi. Atur Versi .NET CLR ke Tanpa Kode Terkelola karena Core Common Language Runtime (CoreCLR) untuk .NET Core di-boot untuk menghosting aplikasi dalam proses pekerja, bukan CLR desktop (.NET CLR).

  2. Tambahkan situs akar di Manajer IIS dengan sub-aplikasi dalam folder di bawah situs akar.

  3. Klik kanan folder sub-aplikasi di Manajer IIS dan pilih Konversi ke Aplikasi.

  4. Dalam dialog Tambahkan Aplikasi , gunakan tombol Pilih untuk Kumpulan Aplikasi untuk menetapkan kumpulan aplikasi yang Anda buat untuk sub-aplikasi. PilihOK.

Penetapan kumpulan aplikasi terpisah ke sub-aplikasi adalah persyaratan saat menggunakan model hosting dalam proses.

Untuk informasi selengkapnya tentang model hosting dalam proses dan mengonfigurasi ASP.NET Core Module, lihat ASP.NET Core Module (ANCM) untuk IIS.

Konfigurasi IIS dengan web.config

Konfigurasi IIS dipengaruhi oleh <system.webServer> bagian web.config untuk skenario IIS yang berfungsi untuk aplikasi ASP.NET Core dengan Modul ASP.NET Core. Misalnya, konfigurasi IIS berfungsi untuk kompresi dinamis. Jika IIS dikonfigurasi di tingkat server untuk menggunakan kompresi dinamis, <urlCompression> elemen dalam file web.config aplikasi dapat menonaktifkannya untuk aplikasi ASP.NET Core.

Untuk informasi selengkapnya, lihat topik berikut:

Untuk mengatur variabel lingkungan untuk aplikasi individual yang berjalan di kumpulan aplikasi terisolasi (didukung untuk IIS 10.0 atau yang lebih baru), lihat bagian perintahAppCmd.exe dari topik Environment Variables <environmentVariables> dalam dokumentasi referensi IIS.

Bagian yang tidak digunakan oleh ASP.NET Core

Bagian konfigurasi aplikasi ASP.NET di web.config tidak digunakan oleh aplikasi ASP.NET Core untuk konfigurasi:

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

ASP.NET Aplikasi core dikonfigurasi menggunakan penyedia konfigurasi lainnya. Untuk informasi selengkapnya, lihat Konfigurasi dan pengaturan konfigurasi run-time .NET Core

Kumpulan Aplikasi

Isolasi kumpulan aplikasi ditentukan oleh model hosting:

  • Hosting dalam proses: Aplikasi diperlukan untuk berjalan di kumpulan aplikasi terpisah.
  • Hosting di luar proses: Sebaiknya isolasi aplikasi satu sama lain dengan menjalankan setiap aplikasi di kumpulan aplikasinya sendiri.

Dialog Tambahkan Situs Web IIS default ke satu kumpulan aplikasi per aplikasi. Saat nama Situs disediakan, teks secara otomatis ditransfer ke kotak teks Kumpulan aplikasi . Kumpulan aplikasi baru dibuat menggunakan nama situs saat situs ditambahkan.

Kumpulan Aplikasi Identity

Akun identitas kumpulan aplikasi memungkinkan aplikasi berjalan di bawah akun unik tanpa harus membuat dan mengelola domain atau akun lokal. Pada IIS 8.0 atau yang lebih baru, IIS Admin Worker Process (WAS) membuat akun virtual dengan nama kumpulan aplikasi baru dan menjalankan proses pekerja kumpulan aplikasi di bawah akun ini secara default. Di Konsol Manajemen IIS di bawah Pengaturan Tingkat Lanjut untuk kumpulan aplikasi, pastikan bahwa Identity diatur untuk menggunakan ApplicationPoolIdentity:

Dialog pengaturan lanjutan kumpulan aplikasi

Proses manajemen IIS membuat pengidentifikasi aman dengan nama kumpulan aplikasi di Sistem Keamanan Windows. Sumber daya dapat diamankan menggunakan identitas ini. Namun, identitas ini bukan akun pengguna nyata dan tidak muncul di Konsol Manajemen Pengguna Windows.

Jika proses pekerja IIS memerlukan akses yang ditingkatkan ke aplikasi, ubah daftar Access Control (ACL) untuk direktori yang berisi aplikasi:

  1. Buka Windows Explorer dan navigasikan ke direktori.

  2. Klik kanan pada direktori dan pilih Properti.

  3. Di bawah tab Keamanan , pilih tombol Edit lalu tombol Tambahkan .

  4. Pilih tombol Lokasi dan pastikan sistem dipilih.

  5. Masukkan IIS AppPool\{APP POOL NAME}, di mana tempat penampung {APP POOL NAME} adalah nama kumpulan aplikasi, di Masukkan nama objek untuk memilih area. Pilih tombol Periksa Nama . Untuk DefaultAppPool , periksa nama menggunakan IIS AppPool\DefaultAppPool. Saat tombol Periksa Nama dipilih, nilai DefaultAppPool ditunjukkan di area nama objek. Tidak dimungkinkan untuk memasukkan nama kumpulan aplikasi langsung ke area nama objek. IIS AppPool\{APP POOL NAME} Gunakan format , di mana tempat penampung {APP POOL NAME} adalah nama kumpulan aplikasi, saat memeriksa nama objek.

    Pilih dialog pengguna atau grup untuk folder aplikasi: Nama kumpulan aplikasi

  6. PilihOK.

    Pilih dialog pengguna atau grup untuk folder aplikasi: Setelah memilih

  7. Izin & eksekusi baca harus diberikan secara default. Berikan izin tambahan sesuai kebutuhan.

Akses juga dapat diberikan pada prompt perintah menggunakan alat ICACLS . DefaultAppPool Menggunakan sebagai contoh, perintah berikut digunakan:

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

Untuk informasi selengkapnya, lihat topik icacls .

Dukungan HTTP/2

HTTP/2 didukung dengan ASP.NET Core dalam skenario penyebaran IIS berikut:

  • Dalam proses
    • Windows Server 2016/Windows 10 atau yang lebih baru; IIS 10 atau yang lebih baru
    • Koneksi TLS 1.2 atau yang lebih baru
  • Di luar proses
    • Windows Server 2016/Windows 10 atau yang lebih baru; IIS 10 atau yang lebih baru
    • Koneksi server tepi yang menghadap publik menggunakan HTTP/2, tetapi koneksi proksi terbalik ke Kestrel server menggunakan HTTP/1.1.
    • Koneksi TLS 1.2 atau yang lebih baru

Untuk penyebaran dalam proses saat koneksi HTTP/2 dibuat, HttpRequest.Protocol laporkan HTTP/2. Untuk penyebaran di luar proses saat koneksi HTTP/2 dibuat, HttpRequest.Protocol laporkan HTTP/1.1.

Untuk informasi selengkapnya tentang model hosting dalam proses dan di luar proses, lihat ASP.NET Core Module (ANCM) untuk IIS.

HTTP/2 diaktifkan secara default. Koneksi kembali ke HTTP/1.1 jika koneksi HTTP/2 tidak dibuat. Untuk informasi selengkapnya tentang konfigurasi HTTP/2 dengan penyebaran IIS, lihat HTTP/2 di IIS.

Permintaan Preflight CORS

Bagian ini hanya berlaku untuk aplikasi ASP.NET Core yang menargetkan .NET Framework.

Untuk aplikasi ASP.NET Core yang menargetkan .NET Framework, permintaan OPTIONS tidak diteruskan ke aplikasi secara default di IIS. Untuk mempelajari cara mengonfigurasi handler web.config IIS aplikasi untuk meneruskan permintaan OPTIONS, lihat Mengaktifkan permintaan lintas asal di ASP.NET Web API 2: Cara Kerja CORS.

Modul Inisialisasi Aplikasi dan Batas Waktu Menganggur

Saat dihosting di IIS oleh Modul Inti ASP.NET versi 2:

Modul Inisialisasi Aplikasi

Berlaku untuk aplikasi yang dihosting dalam proses dan di luar proses.

Inisialisasi Aplikasi IIS adalah fitur IIS yang mengirim permintaan HTTP ke aplikasi saat kumpulan aplikasi dimulai atau didaur ulang. Permintaan memicu aplikasi untuk memulai. Secara default, IIS mengeluarkan permintaan ke URL akar aplikasi (/) untuk menginisialisasi aplikasi (lihat sumber daya tambahan untuk detail selengkapnya tentang konfigurasi).

Konfirmasikan bahwa fitur peran Inisialisasi Aplikasi IIS diaktifkan:

Pada sistem desktop Windows 7 atau yang lebih baru saat menggunakan IIS secara lokal:

  1. Navigasi ke Panel Kontrol>Program>program dan fitur>Aktifkan atau nonaktifkan fitur Windows (sisi kiri layar).
  2. Buka Layanan Informasi> InternetFitur Pengembangan AplikasiWorld Wide Web Services>.
  3. Pilih kotak centang untuk Inisialisasi Aplikasi.

Pada Windows Server 2008 R2 atau yang lebih baru:

  1. Buka Wizard Tambahkan Peran dan Fitur.
  2. Di panel Pilih layanan peran , buka simpul Pengembangan Aplikasi .
  3. Pilih kotak centang untuk Inisialisasi Aplikasi.

Gunakan salah satu pendekatan berikut untuk mengaktifkan Modul Inisialisasi Aplikasi untuk situs:

  • Menggunakan Manajer IIS:

    1. Pilih Kumpulan Aplikasi di panel Koneksi .
    2. Klik kanan kumpulan aplikasi aplikasi dalam daftar dan pilih Pengaturan Tingkat Lanjut.
    3. Mode Mulai default adalah OnDemand. Atur Mode Mulai ke AlwaysRunning. PilihOK.
    4. Buka simpul Situs di panel Koneksi .
    5. Klik kanan aplikasi dan pilih KelolaPengaturan Tingkat LanjutSitus Web>.
    6. Pengaturan Preload Enabled default adalah False. Atur Pramuat Diaktifkan ke True. PilihOK.
  • Menggunakan web.config, tambahkan <applicationInitialization> elemen dengan doAppInitAfterRestart diatur ke true ke <system.webServer> elemen dalam file web.configaplikasi:

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <location path="." inheritInChildApplications="false">
        <system.webServer>
          <applicationInitialization doAppInitAfterRestart="true" />
        </system.webServer>
      </location>
    </configuration>
    

Waktu Diam Habis

Hanya berlaku untuk aplikasi yang dihosting dalam proses.

Untuk mencegah aplikasi diam, atur batas waktu menganggur kumpulan aplikasi menggunakan Manajer IIS:

  1. Pilih Kumpulan Aplikasi di panel Koneksi .
  2. Klik kanan kumpulan aplikasi aplikasi dalam daftar dan pilih Pengaturan Tingkat Lanjut.
  3. Batas Waktu Diam default (menit) adalah 20 menit. Atur Batas Waktu Diam (menit) ke 0 (nol). PilihOK.
  4. Daur ulang proses pekerja.

Untuk mencegah aplikasi yang dihosting di luar proses kehabisan waktu, gunakan salah satu pendekatan berikut:

Modul Inisialisasi Aplikasi dan Sumber daya tambahan Batas Waktu Menganggur

Sumber daya penyebaran untuk administrator IIS

Sumber Daya Tambahan:

Untuk pengalaman tutorial tentang menerbitkan aplikasi ASP.NET Core ke server IIS, lihat Menerbitkan aplikasi ASP.NET Core ke IIS.

Instal Bundel Hosting .NET Core

Sistem operasi yang didukung

Sistem operasi berikut didukung:

  • Windows 7 atau yang lebih baru
  • Windows Server 2008 R2 atau yang lebih baru

serverHTTP.sys (sebelumnya disebut WebListener) tidak berfungsi dalam konfigurasi proksi terbalik dengan IIS. Kestrel Gunakan server.

Untuk informasi tentang hosting di Azure, lihat Menyebarkan aplikasi ASP.NET Core ke Azure App Service.

Untuk panduan pemecahan masalah, lihat Memecahkan masalah dan men-debug proyek ASP.NET Core.

Platform yang didukung

Aplikasi yang diterbitkan untuk penyebaran 32-bit (x86) atau 64-bit (x64) didukung. Sebarkan aplikasi 32-bit dengan .NET Core SDK 32-bit (x86) kecuali aplikasi:

  • Membutuhkan ruang alamat memori virtual yang lebih besar yang tersedia untuk aplikasi 64-bit.
  • Membutuhkan ukuran tumpukan IIS yang lebih besar.
  • Memiliki dependensi asli 64-bit.

Gunakan .NET Core SDK 64-bit (x64) untuk menerbitkan aplikasi 64-bit. Runtime 64-bit harus ada pada sistem host.

ASP.NET Core dikirim dengan Kestrel server, server HTTP lintas platform default.

Saat menggunakan IIS atau IIS Express, aplikasi berjalan dalam proses yang terpisah dari proses pekerja IIS (di luar proses) dengan Kestrel server.

Karena aplikasi ASP.NET Core berjalan dalam proses yang terpisah dari proses pekerja IIS, modul menangani manajemen proses. Modul memulai proses untuk aplikasi ASP.NET Core saat permintaan pertama tiba dan memulai ulang aplikasi jika dimatikan atau crash. Ini pada dasarnya adalah perilaku yang sama seperti yang terlihat dengan aplikasi yang berjalan dalam proses yang dikelola oleh Layanan Aktivasi Proses Windows (WAS).

Diagram berikut mengilustrasikan hubungan antara IIS, modul ASP.NET Core, dan aplikasi yang dihosting di luar proses:

ASP.NET Core Module v2 13.1.19331.0

Permintaan tiba dari web ke driver HTTP.sys mode kernel. Driver merutekan permintaan ke IIS di port yang dikonfigurasi situs web, biasanya 80 (HTTP) atau 443 (HTTPS). Modul meneruskan permintaan ke Kestrel pada port acak untuk aplikasi, yang bukan port 80 atau 443.

Modul menentukan port melalui variabel lingkungan saat startup, dan IIS Integration Middleware mengonfigurasi server untuk mendengarkan .http://localhost:{port} Pemeriksaan tambahan dilakukan, dan permintaan yang tidak berasal dari modul ditolak. Modul tidak mendukung penerusan HTTPS, sehingga permintaan diteruskan melalui HTTP bahkan jika diterima oleh IIS melalui HTTPS.

Setelah Kestrel mengambil permintaan dari modul, permintaan didorong ke alur middleware ASP.NET Core. Alur middleware menangani permintaan dan meneruskannya sebagai HttpContext instans ke logika aplikasi. Middleware yang ditambahkan oleh Integrasi IIS memperbarui skema, IP jarak jauh, dan pathbase ke akun untuk meneruskan permintaan ke Kestrel. Respons aplikasi diteruskan kembali ke IIS, yang mendorongnya kembali ke klien HTTP yang memulai permintaan.

CreateDefaultBuilderKestrel mengonfigurasi server sebagai server web dan mengaktifkan Integrasi IIS dengan mengonfigurasi jalur dasar dan port untuk Modul ASP.NET Core.

Modul ASP.NET Core menghasilkan port dinamis untuk ditetapkan ke proses backend. CreateDefaultBuilderUseIISIntegration memanggil metode . UseIISIntegrationKestrel mengonfigurasi untuk mendengarkan port dinamis di alamat IP localhost (127.0.0.1). Jika port dinamis adalah 1234, Kestrel dengarkan di 127.0.0.1:1234. Konfigurasi ini menggantikan konfigurasi URL lain yang disediakan oleh:

Panggilan ke UseUrls atau KestrelAPI Listen tidak diperlukan saat menggunakan modul. Jika UseUrls atau Listen dipanggil, Kestrel mendengarkan pada port yang ditentukan hanya saat menjalankan aplikasi tanpa IIS.

Untuk panduan konfigurasi Modul Inti ASP.NET, lihat ASP.NET Core Module (ANCM) untuk IIS.

Untuk informasi selengkapnya tentang hosting, lihat Host di ASP.NET Core.

Konfigurasi aplikasi

Mengaktifkan komponen IISIntegration

Saat membangun host di CreateWebHostBuilder (Program.cs), panggil CreateDefaultBuilder untuk mengaktifkan integrasi IIS:

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

Untuk informasi selengkapnya tentang CreateDefaultBuilder, lihat ASP.NET Core Web Host.

Opsi IIS

Opsi Default Pengaturan
AutomaticAuthentication true Jika true, IIS Server mengatur yang HttpContext.Userdiautentikasi oleh Autentikasi Windows. Jika false, server hanya menyediakan identitas untuk HttpContext.User dan merespons tantangan ketika diminta secara eksplisit oleh AuthenticationScheme. Autentikasi Windows harus diaktifkan di IIS agar AutomaticAuthentication berfungsi. Untuk informasi selengkapnya, lihat Autentikasi Windows.
AuthenticationDisplayName null Mengatur nama tampilan yang ditampilkan kepada pengguna pada halaman masuk.

Untuk mengonfigurasi opsi IIS, sertakan konfigurasi layanan untuk IISOptions di ConfigureServices. Contoh berikut mencegah aplikasi HttpContext.Connection.ClientCertificatemengisi :

services.Configure<IISOptions>(options => 
{
    options.ForwardClientCertificate = false;
});
Opsi Default Pengaturan
AutomaticAuthentication true Jika true, Middleware Integrasi IIS mengatur yang HttpContext.Userdiautentikasi oleh Autentikasi Windows. Jika false, middleware hanya menyediakan identitas untuk HttpContext.User dan merespons tantangan ketika diminta secara eksplisit oleh AuthenticationScheme. Autentikasi Windows harus diaktifkan di IIS agar AutomaticAuthentication berfungsi. Untuk informasi selengkapnya, lihat topik Autentikasi Windows .
AuthenticationDisplayName null Mengatur nama tampilan yang ditampilkan kepada pengguna pada halaman masuk.
ForwardClientCertificate true Jika true dan MS-ASPNETCORE-CLIENTCERT header permintaan ada, diisi HttpContext.Connection.ClientCertificate .

Skenario server proksi dan load balancer

Middleware Integrasi IIS, yang mengonfigurasi Middleware Header yang Diteruskan, dan Modul ASP.NET Core dikonfigurasi untuk meneruskan skema (HTTP/HTTPS) dan alamat IP jarak jauh tempat permintaan berasal. Konfigurasi tambahan mungkin diperlukan untuk aplikasi yang dihosting di belakang server proksi tambahan dan load balancer. Untuk informasi selengkapnya, lihat Mengonfigurasi ASP.NET Core untuk bekerja dengan server proxy dan memuat penyeimbang.

file web.config

File web.config mengonfigurasi ASP.NET Core Module. Membuat, mengubah, dan menerbitkan file web.config ditangani oleh target MSBuild (_TransformWebConfig) saat proyek diterbitkan. Target ini ada di target Web SDK (Microsoft.NET.Sdk.Web). SDK diatur di bagian atas file proyek:

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

Jika file web.config tidak ada dalam proyek, file dibuat dengan processPath dan argumen yang benar untuk mengonfigurasi Modul ASP.NET Core dan dipindahkan ke output yang diterbitkan.

Jika file web.config ada dalam proyek, file diubah dengan processPath dan argumen yang benar untuk mengonfigurasi Modul ASP.NET Core dan dipindahkan ke output yang diterbitkan. Transformasi tidak mengubah pengaturan konfigurasi IIS dalam file.

File web.config dapat menyediakan pengaturan konfigurasi IIS tambahan yang mengontrol modul IIS aktif. Untuk informasi tentang modul IIS yang mampu memproses permintaan dengan aplikasi ASP.NET Core, lihat topik modul IIS .

Untuk mencegah Web SDK mengubah file web.config , gunakan <properti IsTransformWebConfigDisabled> dalam file proyek:

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

Saat menonaktifkan Web SDK agar tidak mengubah file, processPath dan argumen harus diatur secara manual oleh pengembang. Untuk informasi selengkapnya, lihat ASP.NET Core Module (ANCM) untuk IIS.

web.config lokasi file

Untuk menyiapkan Modul ASP.NET Core dengan benar, file web.config harus ada di jalur akar konten (biasanya jalur dasar aplikasi) dari aplikasi yang disebarkan. Ini adalah lokasi yang sama dengan jalur fisik situs web yang disediakan untuk IIS. File web.config diperlukan di akar aplikasi untuk mengaktifkan penerbitan beberapa aplikasi menggunakan Web Deploy.

File sensitif ada di jalur fisik aplikasi, seperti <assembly.runtimeconfig.json>, <assembly>.xml (komentar Dokumentasi XML), dan <assembly.deps.json>. Ketika file web.config ada dan situs dimulai secara normal, IIS tidak melayani file sensitif ini jika diminta. Jika file web.config hilang, salah dinamai, atau tidak dapat mengonfigurasi situs untuk startup normal, IIS dapat melayani file sensitif secara publik.

File web.config harus ada dalam penyebaran setiap saat, dinamai dengan benar, dan dapat mengonfigurasi situs untuk memulai normal. Jangan pernah menghapus file web.config dari penyebaran produksi.

Mengubah web.config

Jika Anda perlu mengubah web.config saat menerbitkan (misalnya, atur variabel lingkungan berdasarkan konfigurasi, profil, atau lingkungan), lihat Mengubah web.config.

Konfigurasi IIS

Sistem operasi Windows Server

Aktifkan peran server Server Web (IIS) dan buat layanan peran.

  1. Gunakan wizard Tambahkan Peran dan Fitur dari menu Kelola atau tautan di Manajer Server. Pada langkah Peran Server, centang kotak untuk Server Web (IIS).

    Peran IIS Server Web dipilih di langkah Pilih peran server.

  2. Setelah langkah Fitur , langkah Layanan peran dimuat untuk Server Web (IIS). Pilih layanan peran IIS yang diinginkan atau terima layanan peran default yang disediakan.

    Layanan peran default dipilih di langkah Pilih layanan peran.

    Autentikasi Windows (Opsional)
    Untuk mengaktifkan Autentikasi Windows, perluas simpul berikut:KeamananServer> Web. Pilih fitur Autentikasi Windows . Untuk informasi selengkapnya, lihat Windows Authentication <windowsAuthentication> dan Mengonfigurasi autentikasi Windows.

    WebSocket (Opsional)
    WebSockets didukung dengan ASP.NET Core 1.1 atau yang lebih baru. Untuk mengaktifkan WebSocket, perluas simpul berikut:Pengembangan AplikasiServer> Web. Pilih fitur Protokol WebSocket . Untuk informasi selengkapnya, lihat WebSocket.

  3. Lanjutkan melalui langkah Konfirmasi untuk menginstal peran dan layanan server web. Menghidupkan ulang server/IIS tidak diperlukan setelah menginstal peran Server Web (IIS ).

Sistem operasi desktop Windows

Aktifkan Konsol Manajemen IIS dan World Wide Web Services.

  1. Navigasi ke Panel Kontrol>Program>program dan fitur>Aktifkan atau nonaktifkan fitur Windows (sisi kiri layar).

  2. Buka simpul Layanan Informasi Internet . Buka simpul Alat Manajemen Web .

  3. Centang kotak untuk Konsol Manajemen IIS.

  4. Centang kotak untuk World Wide Web Services.

  5. Terima fitur default untuk World Wide Web Services atau sesuaikan fitur IIS.

    Autentikasi Windows (Opsional)
    Untuk mengaktifkan Autentikasi Windows, perluas simpul berikut:KeamananWorld Wide Web Services>. Pilih fitur Autentikasi Windows . Untuk informasi selengkapnya, lihat Windows Authentication <windowsAuthentication> dan Mengonfigurasi autentikasi Windows.

    WebSocket (Opsional)
    WebSockets didukung dengan ASP.NET Core 1.1 atau yang lebih baru. Untuk mengaktifkan WebSocket, perluas simpul berikut:Fitur Pengembangan AplikasiWorld Wide Web Services>. Pilih fitur Protokol WebSocket . Untuk informasi selengkapnya, lihat WebSocket.

  6. Jika penginstalan IIS memerlukan mulai ulang, mulai ulang sistem.

Konsol Manajemen IIS dan Layanan World Wide Web dipilih di Fitur Windows.

Instal Bundel Hosting .NET Core

Instal .NET Core Hosting Bundle pada sistem hosting. Bundel menginstal .NET Core Runtime, .NET Core Library, dan modul ASP.NET Core. Modul ini memungkinkan aplikasi ASP.NET Core berjalan di belakang IIS.

Penting

Jika Bundel Hosting diinstal sebelum IIS, penginstalan bundel harus diperbaiki. Jalankan penginstal Bundel Hosting lagi setelah menginstal IIS.

Jika Bundel Hosting diinstal setelah menginstal versi 64-bit (x64) dari .NET Core, SDK mungkin tampak hilang (Tidak ada SDK .NET Core yang terdeteksi). Untuk mengatasi masalah ini, lihat Memecahkan masalah dan men-debug proyek ASP.NET Core.

Unduh

  1. Navigasi ke halaman Unduh .NET Core .
  2. Pilih versi .NET Core yang diinginkan.
  3. Di kolom Jalankan aplikasi - Runtime , temukan baris versi runtime .NET Core yang diinginkan.
  4. Unduh alat penginstal menggunakan tautan Bundel Hosting .

Peringatan

Beberapa penginstal berisi versi rilis yang telah mencapai akhir masa pakainya (EOL) dan tidak lagi didukung oleh Microsoft. Untuk informasi selengkapnya, lihat kebijakan dukungan.

Menginstal Bundel Hosting

  1. Jalankan alat penginstal di server. Parameter berikut tersedia saat menjalankan alat penginstal dari shell perintah administrator:

    • OPT_NO_ANCM=1: Lewati penginstalan Modul ASP.NET Core.
    • OPT_NO_RUNTIME=1: Lewati penginstalan runtime .NET Core. Digunakan ketika server hanya menghosting penyebaran mandiri (SCD).
    • OPT_NO_SHAREDFX=1: Lewati penginstalan ASP.NET Shared Framework (ASP.NET runtime). Digunakan ketika server hanya menghosting penyebaran mandiri (SCD).
    • OPT_NO_X86=1: Lewati penginstalan runtime x86. Gunakan parameter ini ketika Anda tahu bahwa Anda tidak akan menghosting aplikasi 32-bit. Jika ada kemungkinan Anda akan menghosting aplikasi 32-bit dan 64-bit di masa mendatang, jangan gunakan parameter ini dan instal kedua runtime.
    • OPT_NO_SHARED_CONFIG_CHECK=1: Nonaktifkan pemeriksaan untuk menggunakan Konfigurasi Bersama IIS saat konfigurasi bersama (applicationHost.config) berada di komputer yang sama dengan penginstalan IIS. Hanya tersedia untuk penginstal Bundler Hosting ASP.NET Core 2.2 atau yang lebih baru. Untuk informasi selengkapnya, lihat ASP.NET Core Module (ANCM) untuk IIS.
  2. Mulai ulang sistem atau jalankan perintah berikut dalam shell perintah:

    net stop was /y
    net start w3svc
    

    Menghidupkan ulang IIS mengambil perubahan pada PATH sistem, yang merupakan variabel lingkungan, yang dibuat oleh alat penginstal.

Tidak perlu menghentikan situs individual secara manual di IIS saat menginstal Bundel Hosting. Aplikasi yang dihosting (situs IIS) dimulai ulang saat IIS dimulai ulang. Aplikasi dimulai lagi ketika mereka menerima permintaan pertama mereka, termasuk dari Modul Inisialisasi Aplikasi.

ASP.NET Core mengadopsi perilaku roll-forward untuk rilis patch paket kerangka kerja bersama. Saat aplikasi yang dihosting oleh IIS dimulai ulang dengan IIS, aplikasi dimuat dengan rilis patch terbaru dari paket yang direferensikan saat mereka menerima permintaan pertama mereka. Jika IIS tidak dimulai ulang, aplikasi memulai ulang dan menunjukkan perilaku roll-forward saat proses pekerja mereka didaur ulang dan mereka menerima permintaan pertama mereka.

Catatan

Untuk informasi tentang Konfigurasi Bersama IIS, lihat modul ASP.NET Core dengan Konfigurasi Bersama IIS.

Menginstal Web Deploy saat menerbitkan dengan Visual Studio

Saat menyebarkan aplikasi ke server dengan Web Deploy, instal versi terbaru Web Deploy di server. Untuk menginstal Web Deploy, gunakan Web Platform Installer (WebPI) atau dapatkan alat penginstal langsung dari Pusat Unduhan Microsoft. Metode yang disukai adalah menggunakan WebPI. WebPI menawarkan penyiapan mandiri dan konfigurasi untuk penyedia hosting.

Membuat situs IIS

  1. Pada sistem hosting, buat folder untuk berisi folder dan file aplikasi yang diterbitkan. Pada langkah berikut, jalur folder disediakan untuk IIS sebagai jalur fisik ke aplikasi. Untuk informasi selengkapnya tentang folder penyebaran aplikasi dan tata letak file, lihat struktur direktori ASP.NET Core.

  2. Di Manajer IIS, buka simpul server di panel Koneksi . Klik kanan folder Situs . Pilih Tambahkan Situs Web dari menu kontekstual.

  3. Berikan Nama situs dan atur Jalur fisik ke folder penyebaran aplikasi. Berikan konfigurasi Pengikatan dan buat situs web dengan memilih OK:

    Berikan Nama situs, jalur fisik, dan Nama host di langkah Tambahkan Situs Web.

    Peringatan

    Pengikatan kartubebas tingkat atas (http://*:80/ dan http://+:80) tidak boleh digunakan. Pengikatan kartubebas tingkat atas dapat membuka aplikasi Anda terhadap kerentanan keamanan. Ini berlaku untuk wildcard yang kuat dan lemah. Gunakan nama host eksplisit daripada kartubebas. Pengikatan wildcard subdomain (misalnya, *.mysub.com) tidak memiliki risiko keamanan ini jika Anda mengontrol seluruh domain induk ( *.comdibandingkan dengan , yang rentan). Lihat rfc7230 section-5.4 untuk informasi selengkapnya.

  4. Di bawah simpul server, pilih Kumpulan Aplikasi.

  5. Klik kanan kumpulan aplikasi situs dan pilih Pengaturan Dasar dari menu kontekstual.

  6. Di jendela Edit Kumpulan Aplikasi , atur versi .NET CLR ke Tanpa Kode Terkelola:

    Atur Tanpa Kode Terkelola untuk versi .NET CLR.

    ASP.NET Core berjalan dalam proses terpisah dan mengelola runtime. ASP.NET Core tidak mengandalkan pemuatan CLR desktop (.NET CLR)—Core Common Language Runtime (CoreCLR) untuk .NET Core di-boot untuk menghosting aplikasi dalam proses pekerja. Mengatur versi .NET CLR ke Tanpa Kode Terkelola bersifat opsional tetapi disarankan.

  7. ASP.NET Core 2.2 atau yang lebih baru: Untuk penyebaran mandiri 64-bit (x64) yang menggunakan model hosting dalam proses, nonaktifkan kumpulan aplikasi untuk proses 32-bit (x86).

    Di bilah sisi TindakanKumpulan Aplikasi Manajer > IIS, pilih Atur Default Kumpulan Aplikasi atau Pengaturan Tingkat Lanjut. Temukan Aktifkan Aplikasi 32-Bit dan atur nilainya ke False. Pengaturan ini tidak memengaruhi aplikasi yang disebarkan untuk hosting di luar proses.

  8. Konfirmasikan identitas model proses memiliki izin yang tepat.

    Jika identitas default kumpulan aplikasi (Model>Identity Proses) diubah dari ApplicationPoolIdentity ke identitas lain, verifikasi bahwa identitas baru memiliki izin yang diperlukan untuk mengakses folder aplikasi, database, dan sumber daya lain yang diperlukan. Misalnya, kumpulan aplikasi memerlukan akses baca dan tulis ke folder tempat aplikasi membaca dan menulis file.

Konfigurasi Autentikasi Windows (Opsional)
Untuk informasi selengkapnya, lihat Mengonfigurasi autentikasi Windows.

Menerapkan aplikasi

Sebarkan aplikasi ke folder jalur Fisik IIS yang dibuat di bagian Buat situs IIS . Web Deploy adalah mekanisme penyebaran yang direkomendasikan, tetapi ada beberapa opsi untuk memindahkan aplikasi dari folder publikasi proyek ke folder penyebaran sistem hosting.

Web Deploy dengan Visual Studio

Lihat topik penerbitan profil visual Studio untuk penyebaran aplikasi ASP.NET Core untuk mempelajari cara membuat profil penerbitan untuk digunakan dengan Web Deploy. Jika penyedia hosting menyediakan Profil Penerbitan atau dukungan untuk membuatnya, unduh profil mereka dan impor menggunakan dialog Penerbitan Visual Studio:

Terbitkan halaman dialog

Web Deploy di luar Visual Studio

Web Deploy juga dapat digunakan di luar Visual Studio dari baris perintah. Untuk informasi selengkapnya, lihat Alat Penyebaran Web.

Alternatif untuk Web Deploy

Gunakan salah satu dari beberapa metode untuk memindahkan aplikasi ke sistem hosting, seperti salinan manual, Xcopy, Robocopy, atau PowerShell.

Untuk informasi selengkapnya tentang penyebaran ASP.NET Core ke IIS, lihat bagian Sumber daya penyebaran untuk administrator IIS .

Telusuri situs web

Setelah aplikasi disebarkan ke sistem hosting, buat permintaan ke salah satu titik akhir publik aplikasi.

Dalam contoh berikut, situs terikat dengan namawww.mysite.com Host IIS di Port80. Permintaan dibuat untuk http://www.mysite.com:

Browser Microsoft Edge telah memuat halaman startup IIS.

File penyebaran terkunci

File di folder penyebaran dikunci saat aplikasi berjalan. File terkunci tidak dapat ditimpa selama penyebaran. Untuk merilis file terkunci dalam penyebaran, hentikan kumpulan aplikasi menggunakan salah satu pendekatan berikut:

  • Gunakan Web Deploy dan referensi Microsoft.NET.Sdk.Web dalam file proyek. File app_offline.htm ditempatkan di akar direktori aplikasi web. Ketika file ada, Modul ASP.NET Core mematikan aplikasi dengan anggun dan melayani app_offline.htm file selama penyebaran. Untuk informasi selengkapnya, lihat referensi konfigurasi Modul ASP.NET Core.

  • Hentikan kumpulan aplikasi secara manual di Manajer IIS di server.

  • Gunakan PowerShell untuk menghapus app_offline.htm (memerlukan PowerShell 5 atau yang lebih baru):

    $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
    
    

Perlindungan data

Tumpukan ASP.NET Core Data Protection digunakan oleh beberapa middleware ASP.NET Core, termasuk middleware yang digunakan dalam autentikasi. Bahkan jika API Perlindungan Data tidak dipanggil oleh kode pengguna, perlindungan data harus dikonfigurasi dengan skrip penyebaran atau dalam kode pengguna untuk membuat penyimpanan kunci kriptografi persisten. Jika perlindungan data tidak dikonfigurasi, kunci disimpan dalam memori dan dibuang saat aplikasi dimulai ulang.

Jika cincin kunci disimpan dalam memori saat aplikasi dimulai ulang:

  • Semua cookietoken autentikasi berbasis tidak valid.
  • Pengguna diharuskan masuk lagi pada permintaan berikutnya.
  • Data apa pun yang dilindungi dengan cincin kunci tidak dapat lagi didekripsi. Ini mungkin termasuk token CSRF dan ASP.NET Core MVC TempData cookies.

Untuk mengonfigurasi perlindungan data di bawah IIS untuk mempertahankan cincin kunci, gunakan salah satu pendekatan berikut:

  • Membuat Kunci Registri Perlindungan Data

    Kunci perlindungan data yang digunakan oleh aplikasi ASP.NET Core disimpan di registri di luar aplikasi. Untuk mempertahankan kunci untuk aplikasi tertentu, buat kunci registri untuk kumpulan aplikasi.

    Untuk penginstalan IIS non-webfarm mandiri, skrip Perlindungan Data Provision-AutoGenKeys.ps1 PowerShell dapat digunakan untuk setiap kumpulan aplikasi yang digunakan dengan aplikasi ASP.NET Core. Skrip ini membuat kunci registri di registri HKLM yang hanya dapat diakses oleh akun proses pekerja dari kumpulan aplikasi aplikasi. Kunci dienkripsi saat tidak aktif menggunakan DPAPI dengan kunci di seluruh komputer.

    Dalam skenario farm web, aplikasi dapat dikonfigurasi untuk menggunakan jalur UNC untuk menyimpan cincin kunci perlindungan datanya. Secara default, kunci perlindungan data tidak dienkripsi. Pastikan bahwa izin file untuk berbagi jaringan terbatas pada akun Windows yang dijalankan aplikasi. Sertifikat X509 dapat digunakan untuk melindungi kunci saat tidak aktif. Pertimbangkan mekanisme untuk memungkinkan pengguna mengunggah sertifikat: Tempatkan sertifikat ke penyimpanan sertifikat tepercaya pengguna dan pastikan sertifikat tersebut tersedia di semua komputer tempat aplikasi pengguna berjalan. Lihat Mengonfigurasi ASP.NET Core Data Protection untuk detailnya.

  • Mengonfigurasi Kumpulan Aplikasi IIS untuk memuat profil pengguna

    Pengaturan ini ada di bagian Model Proses di bawah Pengaturan Tingkat Lanjut untuk kumpulan aplikasi. Atur Muat Profil Pengguna ke True. Ketika diatur ke True, kunci disimpan di direktori profil pengguna dan dilindungi menggunakan DPAPI dengan kunci khusus untuk akun pengguna. Kunci disimpan ke folder %LOCALAPPDATA%/ASP.NET/DataProtection-Keys .

    Atribut setProfileEnvironment kumpulan aplikasi juga harus diaktifkan. Nilai default setProfileEnvironment adalah true. Dalam beberapa skenario (misalnya, OS Windows), setProfileEnvironment diatur ke false. Jika kunci tidak disimpan di direktori profil pengguna seperti yang diharapkan:

    1. Navigasi ke folder %windir%/system32/inetsrv/config .
    2. Buka file applicationHost.config .
    3. Temukan <system.applicationHost><applicationPools><applicationPoolDefaults><processModel> elemennya.
    4. Konfirmasikan bahwa setProfileEnvironment atribut tidak ada, yang default nilainya ke true, atau secara eksplisit mengatur nilai atribut ke true.
  • Menggunakan sistem file sebagai penyimpanan cincin kunci

    Sesuaikan kode aplikasi untuk menggunakan sistem file sebagai penyimpanan cincin kunci. Gunakan sertifikat X509 untuk melindungi cincin kunci dan pastikan sertifikat adalah sertifikat tepercaya. Jika sertifikat ditandatangani sendiri, letakkan sertifikat di penyimpanan Akar Tepercaya.

    Saat menggunakan IIS di farm web:

    • Gunakan berbagi file yang dapat diakses semua komputer.
    • Sebarkan sertifikat X509 ke setiap komputer. Mengonfigurasi perlindungan data dalam kode.
  • Mengatur kebijakan di seluruh komputer untuk perlindungan data

    Sistem perlindungan data memiliki dukungan terbatas untuk menetapkan kebijakan seluruh komputer default untuk semua aplikasi yang menggunakan API Perlindungan Data. Untuk informasi selengkapnya, lihat ASP.NET Gambaran Umum Perlindungan Data Inti.

Direktori Virtual

IIS Virtual Directories tidak didukung dengan aplikasi ASP.NET Core. Aplikasi dapat dihosting sebagai sub-aplikasi.

Sub-aplikasi

Aplikasi ASP.NET Core dapat dihosting sebagai sub-aplikasi IIS (sub-aplikasi). Jalur sub-aplikasi menjadi bagian dari URL aplikasi akar.

Sub-aplikasi tidak boleh menyertakan ASP.NET Core Module sebagai handler. Jika modul ditambahkan sebagai handler dalam file web.config sub-aplikasi, Kesalahan Server Internal 500.19 yang merujuk file konfigurasi yang salah diterima saat mencoba menelusuri sub-aplikasi.

Contoh berikut menunjukkan file web.config yang diterbitkan untuk sub-aplikasi ASP.NET Core:

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

Saat menghosting sub-aplikasi non-ASP.NET Core di bawah aplikasi ASP.NET Core, hapus handler yang diwariskan secara eksplisit di file web.config sub-aplikasi:

<?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>

Tautan aset statis dalam sub-aplikasi harus menggunakan notasi tilde-slash (~/). Notasi Tilde-slash memicu Pembantu Tag untuk menambahkan basis jalur sub-aplikasi ke tautan relatif yang dirender. Untuk sub-aplikasi di , gambar yang ditautkan /subapp_pathdengan src="~/image.png" dirender sebagai src="/subapp_path/image.png". Middleware File Statis aplikasi akar tidak memproses permintaan file statis. Permintaan diproses oleh Middleware File Statis sub-aplikasi.

Jika atribut aset src statis diatur ke jalur absolut (misalnya, src="/image.png"), tautan dirender tanpa basis jalur sub-aplikasi. Middleware File Statis aplikasi akar mencoba melayani aset dari akar web aplikasi akar, yang menghasilkan respons 404 - Tidak Ditemukan kecuali aset statis tersedia dari aplikasi akar.

Untuk menghosting aplikasi ASP.NET Core sebagai sub-aplikasi di bawah aplikasi ASP.NET Core lainnya:

  1. Buat kumpulan aplikasi untuk sub-aplikasi. Atur Versi .NET CLR ke Tanpa Kode Terkelola karena Core Common Language Runtime (CoreCLR) untuk .NET Core di-boot untuk menghosting aplikasi dalam proses pekerja, bukan CLR desktop (.NET CLR).

  2. Tambahkan situs akar di IIS Manager dengan sub-aplikasi dalam folder di bawah situs akar.

  3. Klik kanan folder sub-aplikasi di IIS Manager dan pilih Konversi ke Aplikasi.

  4. Dalam dialog Tambahkan Aplikasi , gunakan tombol Pilih untuk Kumpulan Aplikasi untuk menetapkan kumpulan aplikasi yang Anda buat untuk sub-aplikasi. PilihOK.

Penetapan kumpulan aplikasi terpisah ke sub-aplikasi adalah persyaratan saat menggunakan model hosting dalam proses.

Untuk informasi selengkapnya tentang model hosting dalam proses dan mengonfigurasi ASP.NET Core Module, lihat ASP.NET Core Module (ANCM) untuk IIS.

Konfigurasi IIS dengan web.config

Konfigurasi IIS dipengaruhi oleh <system.webServer> bagian web.config untuk skenario IIS yang berfungsi untuk aplikasi ASP.NET Core dengan ASP.NET Core Module. Misalnya, konfigurasi IIS berfungsi untuk pemadatan dinamis. Jika IIS dikonfigurasi di tingkat server untuk menggunakan kompresi dinamis, <urlCompression> elemen dalam file web.config aplikasi dapat menonaktifkannya untuk aplikasi ASP.NET Core.

Untuk informasi selengkapnya, lihat topik berikut:

Untuk mengatur variabel lingkungan untuk aplikasi individual yang berjalan di kumpulan aplikasi terisolasi (didukung untuk IIS 10.0 atau yang lebih baru), lihat bagian perintahAppCmd.exe dari topik Environment Variables <environmentVariables> dalam dokumentasi referensi IIS.

Bagian yang tidak digunakan oleh ASP.NET Core

Bagian konfigurasi aplikasi ASP.NET 4.x di web.config tidak digunakan oleh aplikasi ASP.NET Core untuk konfigurasi:

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

ASP.NET Core dikonfigurasi menggunakan penyedia konfigurasi lainnya. Untuk informasi lebih lanjut, lihat Konfigurasi.

Kumpulan Aplikasi

Saat menghosting beberapa situs web di server, sebaiknya isolasi aplikasi satu sama lain dengan menjalankan setiap aplikasi di kumpulan aplikasinya sendiri. Dialog Tambahkan Situs Web IIS default ke konfigurasi ini. Saat nama Situs disediakan, teks secara otomatis ditransfer ke kotak teks Kumpulan aplikasi . Kumpulan aplikasi baru dibuat menggunakan nama situs saat situs ditambahkan.

Kumpulan Aplikasi Identity

Akun identitas kumpulan aplikasi memungkinkan aplikasi berjalan di bawah akun unik tanpa harus membuat dan mengelola domain atau akun lokal. Pada IIS 8.0 atau yang lebih baru, IIS Admin Worker Process (WAS) membuat akun virtual dengan nama kumpulan aplikasi baru dan menjalankan proses pekerja kumpulan aplikasi di bawah akun ini secara default. Di Konsol Manajemen IIS di bawah Pengaturan Tingkat Lanjut untuk kumpulan aplikasi, pastikan bahwa Identity diatur untuk menggunakan ApplicationPoolIdentity:

Dialog pengaturan tingkat lanjut kumpulan aplikasi

Proses manajemen IIS membuat pengidentifikasi aman dengan nama kumpulan aplikasi di Sistem Keamanan Windows. Sumber daya dapat diamankan menggunakan identitas ini. Namun, identitas ini bukan akun pengguna nyata dan tidak muncul di Konsol Manajemen Pengguna Windows.

Jika proses pekerja IIS memerlukan akses yang ditingkatkan ke aplikasi, ubah daftar Access Control (ACL) untuk direktori yang berisi aplikasi:

  1. Buka Windows Explorer dan navigasikan ke direktori.

  2. Klik kanan pada direktori dan pilih Properti.

  3. Di bawah tab Keamanan , pilih tombol Edit lalu tombol Tambahkan .

  4. Pilih tombol Lokasi dan pastikan sistem dipilih.

  5. Masukkan IIS AppPool\<app_pool_name> di Masukkan nama objek untuk memilih area. Pilih tombol Periksa Nama . Untuk DefaultAppPool , periksa nama menggunakan IIS AppPool\DefaultAppPool. Saat tombol Periksa Nama dipilih, nilai DefaultAppPool ditunjukkan di area nama objek. Tidak dimungkinkan untuk memasukkan nama kumpulan aplikasi langsung ke area nama objek. Gunakan format IIS AppPool\<app_pool_name> saat memeriksa nama objek.

    Pilih dialog pengguna atau grup untuk folder aplikasi: Nama kumpulan aplikasi

  6. PilihOK.

    Pilih dialog pengguna atau grup untuk folder aplikasi: Setelah memilih

  7. Izin & eksekusi baca harus diberikan secara default. Berikan izin tambahan sesuai kebutuhan.

Akses juga dapat diberikan pada prompt perintah menggunakan alat ICACLS . Menggunakan DefaultAppPool sebagai contoh, perintah berikut digunakan:

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

Untuk informasi selengkapnya, lihat topik icacls .

Dukungan HTTP/2

HTTP/2 didukung untuk penyebaran di luar proses yang memenuhi persyaratan dasar berikut:

  • Windows Server 2016/Windows 10 atau yang lebih baru; IIS 10 atau yang lebih baru
  • Koneksi server tepi yang menghadap publik menggunakan HTTP/2, tetapi koneksi proksi terbalik ke Kestrel server menggunakan HTTP/1.1.
  • Kerangka kerja target: Tidak berlaku untuk penyebaran di luar proses, karena koneksi HTTP/2 ditangani sepenuhnya oleh IIS.
  • Koneksi TLS 1.2 atau yang lebih baru

Jika koneksi HTTP/2 dibuat, HttpRequest.Protocol melaporkan HTTP/1.1.

HTTP/2 diaktifkan secara default. Koneksi kembali ke HTTP/1.1 jika koneksi HTTP/2 tidak dibuat. Untuk informasi selengkapnya tentang konfigurasi HTTP/2 dengan penyebaran IIS, lihat HTTP/2 di IIS.

Permintaan Preflight CORS

Bagian ini hanya berlaku untuk aplikasi ASP.NET Core yang menargetkan .NET Framework.

Untuk aplikasi ASP.NET Core yang menargetkan .NET Framework, permintaan OPTIONS tidak diteruskan ke aplikasi secara default di IIS. Untuk mempelajari cara mengonfigurasi handler IIS aplikasi di web.config untuk meneruskan permintaan OPTIONS, lihat Mengaktifkan permintaan lintas asal di ASP.NET Web API 2: Cara Kerja CORS.

Sumber daya penyebaran untuk administrator IIS

Sumber Daya Tambahan: