Host ASP.NET Core di Windows dengan IIS
Catatan
Ini bukan versi terbaru dari artikel ini. Untuk rilis saat ini, lihat versi .NET 8 dari artikel ini.
Peringatan
Versi ASP.NET Core ini tidak lagi didukung. Untuk informasi selengkapnya, lihat Kebijakan Dukungan .NET dan .NET Core. Untuk rilis saat ini, lihat versi .NET 8 dari artikel ini.
Penting
Informasi ini berkaitan dengan produk pra-rilis yang mungkin dimodifikasi secara substansial sebelum dirilis secara komersial. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Untuk rilis saat ini, lihat versi .NET 8 dari artikel ini.
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:
- Memerlukan ruang alamat memori virtual yang lebih besar yang tersedia untuk aplikasi 64-bit.
- Membutuhkan ukuran tumpukan IIS yang lebih besar.
- Memiliki dependensi native 64-bit.
Memasang ASP.NET Core Module/Hosting Bundle
Unduh penginstal terbaru menggunakan tautan berikut:
Alat penginstal .NET Core Hosting Bundle saat ini (unduh langsung)
Untuk petunjuk detail selengkapnya tentang cara memasang ASP.NET Core Module, atau memasang versi yang berbeda, lihat Memasang .NET Core Hosting Bundle.
Untuk mengunduh versi bundel hosting sebelumnya, lihat masalah GitHub ini.
Memulai
Untuk mulai menghosting situs web di IIS, lihat panduan memulai kami.
Untuk mulai menghosting situs web di Azure App Service, lihat panduan penyebaran ke Azure App Service kami.
Konfigurasi
Untuk panduan konfigurasi, lihat Konfigurasi tingkat lanjut.
Sumber daya penyebaran untuk administrator IIS
- Dokumentasi IIS
- Mulai Menggunakan Manajer IIS di IIS
- Penyebaran aplikasi .NET Core
- ASP.NET Core Module (ANCM) untuk IIS
- Struktur direktori ASP.NET Core
- Modul IIS dengan ASP.NET Core
- Memecahkan masalah ASP.NET Core pada Azure App Service dan IIS
- Pemecahan masalah kesalahan umum untuk Azure App Service dan IIS dengan ASP.NET Core
Daur ulang yang tumpang tindih
Secara umum, sebaiknya gunakan pola seperti penyebaran biru-hijau untuk penyebaran tanpa waktu henti. Fitur seperti Daur Ulang yang Tumpang Tindih akan membantu, tetapi tidak akan menjamin bahwa Anda dapat melakukan penyebaran tanpa waktu henti. Untuk informasi lebih lanjut, 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.
Memasang .NET Core Hosting Bundle
Sistem operasi yang didukung
Sistem operasi berikut didukung:
- Windows 7 atau yang lebih baru
- Windows Server 2012 R2 atau versi lebih baru
Server HTTP.sys (sebelumnya disebut WebListener) tidak berfungsi dalam konfigurasi proksi terbalik dengan IIS. Gunakan server Kestrel.
Untuk informasi tentang hosting di Azure, lihat Menyebarkan aplikasi ASP.NET Core ke Azure App Service.
Untuk panduan pemecahan masalah, lihat Memecahkan masalah dan mendebug 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:
- Memerlukan ruang alamat memori virtual yang lebih besar yang tersedia untuk aplikasi 64-bit.
- Membutuhkan ukuran tumpukan IIS yang lebih besar.
- Memiliki dependensi native 64-bit.
Aplikasi yang diterbitkan untuk 32-bit (x86) harus memiliki 32-bit yang diaktifkan untuk Kelompok Aplikasi IIS mereka. Untuk informasi lebih lanjut, lihat bagian Membuat situs IIS.
Gunakan 64-bit (x64) .NET Core SDK untuk menerbitkan aplikasi 64-bit. Runtime bahasa umum 64-bit harus ada di 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 jika dibandingkan dengan hosting di luar proses karena permintaan tidak diproksikan melalui adapter loopback, antarmuka jaringan yang mengembalikan lalu lintas jaringan keluar kembali ke mesin yang sama. IIS menangani manajemen proses dengan Windows Process Activation Service (WAS).
- Melakukan inisialisasi aplikasi.
- Memuat CoreCLR.
- Panggilan
Program.Main
.
- Menangani masa pakai permintaan native IIS.
Diagram berikut mengilustrasikan hubungan antara IIS, ASP.NET Core Module, dan aplikasi yang dihosting dalam proses:
- Permintaan datang dari web ke driver HTTP.sys mode kernel.
- Driver merutekan permintaan native ke IIS pada port situs web yang dikonfigurasi, biasanya 80 (HTTP) atau 443 (HTTPS).
- ASP.NET Core Module menerima permintaan native dan meneruskannya ke Server HTTP IIS (
IISHttpServer
). Server HTTP IIS adalah implementasi server dalam proses untuk IIS yang mengubah permintaan dari native menjadi terkelola.
Setelah Server HTTP IIS memproses permintaan:
- Permintaan dikirim ke alur middleware ASP.NET Core.
- Alur middleware menangani permintaan dan meneruskannya sebagai instans
HttpContext
ke logika aplikasi. - Respons aplikasi diteruskan kembali ke IIS melalui Server HTTP IIS.
- IIS mengirimkan respons ke klien yang menginisiasi permintaan.
Hosting dalam proses adalah keikutsertaan untuk aplikasi yang sudah ada. Template web ASP.NET Core menggunakan model hosting dalam proses.
CreateDefaultBuilder
menambahkan instans IServer dengan memanggil metode UseIIS untuk mem-boot CoreCLR 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 melakukan proksi permintaan ke Kestrel.
Aplikasi yang diterbitkan sebagai satu file 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 ketika permintaan pertama tiba dan memulai ulang aplikasi jika aplikasi dimatikan atau mengalami crash. Ini pada dasarnya merupakan perilaku yang sama seperti yang terlihat pada aplikasi yang berjalan dalam proses yang dikelola oleh Windows Process Activation Service (WAS).
Diagram berikut mengilustrasikan hubungan antara IIS, ASP.NET Core Module, dan aplikasi yang dihosting di luar proses:
- Permintaan datang dari web ke driver HTTP.sys mode kernel.
- Driver merutekan permintaan ke IIS di port situs web yang dikonfigurasi. Port yang dikonfigurasi biasanya 80 (HTTP) atau 443 (HTTPS).
- Modul meneruskan permintaan ke Kestrel pada port acak untuk aplikasi. Port acak bukan 80 atau 443.
ASP.NET Core Module menentukan port melalui variabel lingkungan saat startup. Ekstensi UseIISIntegration mengonfigurasi server yang akan didengarkan di http://localhost:{PORT}
. Pemeriksaan tambahan dilakukan, dan permintaan yang tidak berasal dari modul ditolak. Modul tidak mendukung penerusan HTTPS. Permintaan diteruskan melalui HTTP meski permintaan 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 instans HttpContext
ke logika aplikasi. Middleware yang ditambahkan oleh Integrasi IIS memperbarui skema, IP jarak jauh, dan basis jalur ke akun untuk meneruskan permintaan ke Kestrel. Respons aplikasi diteruskan kembali ke IIS, yang meneruskannya kembali ke klien HTTP yang menginisiasi permintaan.
Untuk panduan konfigurasi ASP.NET Core Module, lihat ASP.NET Core Module (ANCM) untuk IIS.
Untuk informasi lebih lanjut tentang hosting, lihat Menghosting 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 lebih lanjut tentang CreateDefaultBuilder
, lihat Host Generik .NET di ASP.NET Core.
Opsi IIS
Model hosting dalam proses
Untuk mengonfigurasi opsi Server IIS, 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 , Server IIS mengatur HttpContext.User yang diautentikasi oleh Autentikasi Windows. Jika false , server hanya menyediakan identity untuk HttpContext.User dan merespons tantangan ketika secara eksplisit diminta oleh AuthenticationScheme . Autentikasi Windows harus diaktifkan di IIS agar AutomaticAuthentication berfungsi. Untuk informasi lebih lanjut, lihat Autentikasi Windows. |
AuthenticationDisplayName |
null |
Mengatur nama tampilan yang ditampilkan kepada pengguna di halaman masuk. |
AllowSynchronousIO |
false |
Apakah I/O sinkron diizinkan untuk HttpContext.Request dan HttpContext.Response . |
MaxRequestBodySize |
30000000 |
Mendapatkan atau mengatur ukuran isi permintaan maksimum untuk HttpRequest . Perhatikan bahwa IIS sendiri memiliki batas maxAllowedContentLength yang akan diproses sebelum MaxRequestBodySize diatur di IISServerOptions . Mengubah MaxRequestBodySize tidak akan memengaruhi maxAllowedContentLength . Untuk meningkatkan maxAllowedContentLength , tambahkan entri di web.config untuk mengatur 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 mengisi HttpContext.Connection.ClientCertificate
:
services.Configure<IISOptions>(options =>
{
options.ForwardClientCertificate = false;
});
Opsi | Default | Pengaturan |
---|---|---|
AutomaticAuthentication |
true |
Jika true , Middleware Integrasi IIS mengatur HttpContext.User yang diautentikasi oleh Autentikasi Windows. Jika false , middleware hanya menyediakan identity untuk HttpContext.User dan merespons tantangan ketika secara eksplisit diminta oleh AuthenticationScheme . Autentikasi Windows harus diaktifkan di IIS agar AutomaticAuthentication berfungsi. Untuk informasi lebih lanjut, lihat topik Autentikasi Windows. |
AuthenticationDisplayName |
null |
Mengatur nama tampilan yang ditampilkan kepada pengguna di halaman masuk. |
ForwardClientCertificate |
true |
Jika true dan header permintaan MS-ASPNETCORE-CLIENTCERT ada, HttpContext.Connection.ClientCertificate akan terisi. |
Skenario server proksi dan penyeimbang beban
Middleware Integrasi IIS dan ASP.NET Core Module 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 penyeimbang beban. 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 arguments
yang benar untuk mengonfigurasi ASP.NET Core Module dan dipindahkan ke output yang diterbitkan.
Jika file web.config
ada dalam proyek, file diubah dengan processPath
dan arguments
yang benar untuk mengonfigurasi ASP.NET Core Module dan dipindahkan ke output yang diterbitkan. Transformasi tidak mengubah pengaturan konfigurasi IIS dalam file.
File web.config
mungkin 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 agar Web SDK tidak 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 arguments
harus diatur secara manual oleh pengembang. Untuk informasi lebih lanjut, lihat ASP.NET Core Module (ANCM) untuk IIS.
Lokasi file web.config
Untuk menyiapkan ASP.NET Core Module dengan benar, file web.config
harus ada di jalur akar konten (biasanya jalur dasar aplikasi) dari aplikasi yang diterapkan. Ini adalah lokasi yang sama dengan jalur fisik situs web yang disediakan untuk IIS. File web.config
diperlukan di akar aplikasi untuk memungkinkan 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 rakitannya. Saat file web.config
ada dan situs dimulai secara normal, IIS tidak menyajikan file sensitif ini jika diminta. Jika file web.config
tidak ada, salah diberi nama, atau tidak dapat mengonfigurasi situs untuk startup normal, IIS mungkin menyajikan file sensitif secara publik.
File web.config
harus selalu ada dalam penyebaran, diberi nama dengan benar, dan dapat mengonfigurasi situs untuk startup yang normal. Jangan pernah menghapus file web.config
dari penyebaran produksi.
Mengubah web.config
Jika Anda perlu mengubah web.config
saat penerbitan, lihat Mengubah web.config. Anda mungkin perlu mengubah web.config
saat 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.
Gunakan wizard Tambahkan Peran dan Fitur dari menu Kelola atau tautan di Pengelola Server. Pada langkah Peran Server, centang kotak untuk Server Web (IIS).
Setelah langkah Fitur, langkah Layanan peran akan dimuat untuk Server Web (IIS). Pilih layanan peran IIS yang diinginkan atau terima layanan peran default yang disediakan.
Autentikasi Windows (Opsional)
Untuk mengaktifkan Autentikasi Windows, luaskan node berikut: Server Web>Keamanan. Pilih fitur Autentikasi Windows. Untuk informasi lebih lanjut, lihat Autentikasi Windows<windowsAuthentication>
dan Mengonfigurasi autentikasi Windows.WebSocket (Opsional)
WebSocket didukung dengan ASP.NET Core 1.1 atau yang lebih baru. Untuk mengaktifkan WebSocket, perluas node berikut: Server Web>Pengembangan Aplikasi. Pilih fitur Protokol WebSocket. Untuk informasi lebih lanjut, lihat WebSocket.Lanjutkan ke langkah Konfirmasi untuk memasang peran dan layanan server web. Tindakan mulai ulang server/IIS tidak diperlukan setelah memasang peran Server Web (IIS).
Sistem operasi desktop Windows
Aktifkan IIS Management Console dan Layanan W3.
Buka Panel Kontrol>Program>Program dan Fitur>Aktifkan atau nonaktifkan fitur Windows (sisi kiri layar).
Buka node Internet Information Services. Buka node Alat Manajemen Web.
Centang kotak untuk IIS Management Console.
Centang kotak untuk Layanan W3.
Terima fitur default untuk Layanan W3 atau kustomisasi fitur IIS.
Autentikasi Windows (Opsional)
Untuk mengaktifkan Autentikasi Windows, luaskan node berikut: Layanan W3>Keamanan. Pilih fitur Autentikasi Windows. Untuk informasi lebih lanjut, lihat Autentikasi Windows <windowsAuthentication> dan Mengonfigurasi autentikasi Windows.WebSocket (Opsional)
WebSocket didukung dengan ASP.NET Core 1.1 atau yang lebih baru. Untuk mengaktifkan WebSocket, luaskan node berikut: Layanan W3>Fitur Pengembangan Aplikasi. Pilih fitur Protokol WebSocket. Untuk informasi lebih lanjut, lihat WebSocket.Jika penginstalan IIS memerlukan tindakan mulai ulang, mulai ulang sistem.
Memasang .NET Core Hosting Bundle
Pasang .NET Core Hosting Bundle pada sistem hosting. Bundel memasang .NET Core Runtime, .NET Core Library, dan ASP.NET Core Module. Modul ini memungkinkan aplikasi ASP.NET Core berjalan di belakang IIS.
Penting
Jika Hosting Bundle dipasang sebelum IIS, penginstalan bundel harus diperbaiki. Jalankan lagi alat penginstal Hosting Bundle setelah memasang IIS.
Jika Hosting Bundle dipasang setelah memasang versi 64-bit (x64) .NET Core, SDK mungkin tampak tidak ada (Tidak ada .NET Core SDK yang terdeteksi). Untuk mengatasi masalah tersebut, lihat Memecahkan masalah dan mendebug proyek ASP.NET Core.
Unduhan langsung (versi saat ini)
Unduh alat penginstal menggunakan tautan berikut:
Alat penginstal .NET Core Hosting Bundle saat ini (unduh langsung)
Versi alat penginstal sebelumnya
Untuk mendapatkan versi alat penginstal sebelumnya:
- Buka halaman Unduh .NET Core.
- Pilih versi .NET Core yang diinginkan.
- Di kolom Jalankan aplikasi - Runtime bahasa umum, temukan baris versi runtime bahasa umum .NET Core yang diinginkan.
- Unduh alat penginstal menggunakan tautan Hosting Bundle.
Peringatan
Beberapa alat penginstal berisi versi rilis yang telah mencapai akhir masa pakainya (EOL) dan tidak lagi didukung oleh Microsoft. Untuk informasi lebih lanjut, lihat kebijakan dukungan.
Memasang Hosting Bundle
Jalankan alat penginstal di server. Parameter berikut tersedia saat menjalankan alat penginstal dari shell perintah administrator:
OPT_NO_ANCM=1
:Lewati penginstalan ASP.NET Core Module.OPT_NO_RUNTIME=1
: Lewati penginstalan runtime bahasa umum .NET Core. Digunakan saat server hanya menghosting penyebaran mandiri (SCD).OPT_NO_SHAREDFX=1
: Lewati penginstalan ASP.NET Shared Framework (runtime bahasa umum ASP.NET). Digunakan saat server hanya menghosting penyebaran mandiri (SCD).OPT_NO_X86=1
: Lewati penginstalan runtime bahasa umum 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 pasang kedua runtime bahasa umum.OPT_NO_SHARED_CONFIG_CHECK=1
: Nonaktifkan pemeriksaan untuk menggunakan Konfigurasi Bersama IIS saat konfigurasi bersama (applicationHost.config
) berada di mesin yang sama dengan penginstalan IIS. Hanya tersedia untuk alat penginstal Hosting Bundler ASP.NET Core 2.2 atau yang lebih baru. Untuk informasi lebih lanjut, lihat ASP.NET Core Module (ANCM) untuk IIS.
Tindakan memulai ulang IIS akan mengambil perubahan pada sistem PATH, yang merupakan variabel lingkungan, yang dibuat oleh alat penginstal. Untuk memulai ulang server web, hentikan Windows Process Activation Service (WAS) dan kemudian mulai ulang World Wide Web Publishing Service (W3SVC). Mulai ulang sistem atau jalankan perintah berikut di shell perintah yang ditingkatkan:
net stop was /y net start w3svc
ASP.NET Core tidak mengadopsi perilaku roll-forward untuk rilis patch dari paket kerangka kerja bersama. Setelah meningkatkan kerangka kerja bersama dengan memasang bundel hosting baru, mulai ulang sistem atau jalankan perintah berikut di shell perintah yang ditingkatkan:
net stop was /y
net start w3svc
Catatan
Untuk informasi tentang Konfigurasi Bersama IIS, lihat ASP.NET Core Module dengan Konfigurasi Bersama IIS.
Memasang Web Deploy saat menerbitkan dengan Visual Studio
Saat menyebarkan aplikasi ke server dengan Web Deploy, pasang versi terbaru Web Deploy di server. Untuk menginstal Web Deploy, gunakan Web Platform Installer (WebPI) atau lihat Unduhan IIS: Web Deploy. Metode pilihannya adalah menggunakan WebPI. WebPI menawarkan penyiapan mandiri dan konfigurasi untuk penyedia hosting.
Membuat situs IIS
Pada sistem hosting, buat folder untuk memuat folder dan file aplikasi yang diterbitkan. Pada langkah berikut, jalur folder disediakan ke IIS sebagai jalur fisik ke aplikasi. Untuk informasi lebih lanjut tentang folder penyebaran dan tata letak file aplikasi, lihat Struktur direktori ASP.NET Core.
Di Manajer IIS, buka node server di panel Koneksi. Klik kanan folder Situs. Pilih Tambahkan Situs Web dari menu kontekstual.
Berikan Nama situs dan atur Jalur fisik ke folder penyebaran aplikasi. Berikan konfigurasi Pengikatan dan buat situs web dengan memilih Oke:
Peringatan
Pengikatan wildcard tingkat atas (
http://*:80/
danhttp://+:80
) tidak boleh digunakan. Pengikatan wildcard tingkat atas dapat mengekspos aplikasi Anda terhadap kerentanan keamanan. Ini berlaku untuk wildcard kuat dan lemah. Gunakan nama host eksplisit alih-alih wildcard. Pengikatan wildcard subdomain (misalnya,*.mysub.com
) tidak memiliki risiko keamanan ini jika Anda mengontrol seluruh domain induk (alih-alih*.com
, yang rentan). Lihat RFC 9110: Semantik HTTP (Bagian 7.2: Host dan :otoritas) untuk informasi selengkapnya.Di bawah node server, pilih Kelompok Aplikasi.
Klik kanan kelompok aplikasi situs dan pilih Pengaturan Dasar dari menu kontekstual.
Di jendela Edit Kelompok Aplikasi, atur Versi .NET CLR ke Tanpa Kode Aman:
ASP.NET Core berjalan dalam proses terpisah dan mengelola runtime bahasa umum. ASP.NET Core tidak bergantung pada 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 Aman sifatnya opsional tetapi disarankan.
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 Kelompok Aplikasi untuk 32-bit. Di Manajer IIS, buka Kelompok Aplikasi di bilah sisi Koneksi. Pilih Kelompok Aplikasi dari aplikasi. Di bilah sisi 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 kelompok aplikasi untuk proses 32-bit (x86). Di Manajer IIS, buka Kelompok Aplikasi di bilah sisi Koneksi. Pilih Kelompok Aplikasi dari aplikasi. Di bilah sisi Tindakan, pilih Pengaturan Tingkat Lanjut. Atur Aktifkan Aplikasi 32-Bit ke
False
.
Konfirmasikan model identity proses memiliki izin yang tepat.
Jika default identity kumpulan aplikasi (ModelIdentity> Proses) diubah dari ApplicationPoolIdentity ke yang lainidentity, verifikasi bahwa yang baru identity memiliki izin yang diperlukan untuk mengakses folder aplikasi, database, dan sumber daya lain yang diperlukan. Misalnya, kelompok aplikasi memerlukan akses baca dan tulis ke folder tempat aplikasi membaca dan menulis file.
Konfigurasi Autentikasi Windows (Opsional)
Untuk informasi lebih lanjut, lihat Mengonfigurasi autentikasi Windows.
Menyebarkan aplikasi
Sebarkan aplikasi ke folder Jalur fisik IIS yang dibuat di bagian Membuat situs IIS. Web Deploy adalah mekanisme yang disarankan untuk penyebaran, tetapi ada beberapa opsi untuk memindahkan aplikasi dari folder publish
proyek ke folder penyebaran sistem hosting.
Web Deploy dengan Visual Studio
Lihat topik Profil penerbitan Visual Studio untuk penyebaran aplikasi ASP.NET Core guna 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:
Web Deploy di luar Visual Studio
Web Deploy juga dapat digunakan di luar Visual Studio dari baris perintah. Untuk informasi lebih lanjut, lihat Alat Web Deployment.
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 lebih lanjut 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 ke nama Host IIS di Port 80
.www.mysite.com
Permintaan dibuat untuk http://www.mysite.com
:
File penyebaran yang dikunci
File dalam folder penyebaran dikunci saat aplikasi sedang berjalan. File yang dikunci tidak dapat ditimpa selama penyebaran. Untuk merilis file yang dikunci dalam penyebaran, hentikan kelompok aplikasi menggunakan salah satu pendekatan berikut:
Gunakan Web Deploy dan referensikan ke
Microsoft.NET.Sdk.Web
dalam file proyek. Fileapp_offline.htm
ditempatkan di akar direktori aplikasi web. Jika file ada, ASP.NET Core Module akan dengan lancar mematikan aplikasi dan menyajikan fileapp_offline.htm
selama penyebaran. Untuk informasi lebih lanjut, lihat Referensi konfigurasi ASP.NET Core Module.Hentikan kelompok 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. Meskipun API Perlindungan Data tidak dipanggil oleh kode pengguna, perlindungan data harus dikonfigurasi dengan skrip penyebaran atau dalam kode pengguna untuk membuat penyimpanan kunci kriptografik yang persisten. Jika perlindungan data tidak dikonfigurasi, kunci disimpan di memori dan dibuang saat aplikasi dimulai ulang.
Jika ring kunci disimpan dalam memori saat aplikasi dimulai ulang:
- Semua token autentikasi berbasis cookie menjadi tidak valid.
- Pengguna diminta untuk masuk lagi pada permintaan berikutnya.
- Data apa pun yang dilindungi dengan ring kunci tidak dapat lagi didekripsi. Ini mungkin termasuk token CSRF dan cookie ASP.NET Core MVC TempData.
Untuk mengonfigurasi perlindungan data di bawah IIS guna mempertahankan ring 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 kelompok aplikasi.
Untuk penginstalan IIS non-webfarm mandiri, skrip PowerShell Perlindungan Data Provision-AutoGenKeys.ps1 dapat digunakan untuk setiap kelompok 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 kelompok aplikasi dari aplikasi. Kunci dienkripsi saat rest menggunakan DPAPI dengan kunci di seluruh komputer.
Dalam skenario farm web, aplikasi dapat dikonfigurasi untuk menggunakan jalur UNC untuk menyimpan ring kunci perlindungan datanya. Secara default, kunci perlindungan data tidak dienkripsi. Pastikan bahwa izin file untuk berbagi jaringan terbatas pada akun Windows tempat aplikasi berjalan. Sertifikat X509 dapat digunakan untuk melindungi kunci di rest. Pertimbangkan mekanisme untuk mengizinkan pengguna mengunggah sertifikat: Tempatkan sertifikat ke dalam penyimpanan sertifikat tepercaya pengguna dan pastikan sertifikat tersebut tersedia di semua mesin tempat aplikasi pengguna berjalan. Lihat Mengonfigurasi Perlindungan Data ASP.NET Core untuk detailnya.
Mengonfigurasikan Kelompok Aplikasi IIS untuk memuat profil pengguna
Pengaturan ini ada di bagian Model Proses di bawah Pengaturan Tingkat Lanjut untuk kelompok aplikasi. Atur Muat Profil Pengguna ke
True
. Jika diatur keTrue
, 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 kelompok aplikasi juga harus diaktifkan. Nilai default
setProfileEnvironment
adalahtrue
. Dalam beberapa skenario (misalnya, OS Windows),setProfileEnvironment
diatur kefalse
. Jika kunci tidak disimpan di direktori profil pengguna seperti yang diharapkan:- Buka folder %windir%/system32/inetsrv/config.
- Buka file applicationHost.config.
- Temukan
<system.applicationHost><applicationPools><applicationPoolDefaults><processModel>
elemennya. - Konfirmasikan bahwa atribut
setProfileEnvironment
tidak ada, yang membuat nilai diatur ke defaulttrue
, atau secara eksplisit mengatur nilai atribut ketrue
.
Menggunakan sistem file sebagai penyimpanan ring kunci
Sesuaikan kode aplikasi untuk menggunakan sistem file sebagai penyimpanan ring kunci. Gunakan sertifikat X509 untuk melindungi ring kunci dan pastikan sertifikat tersebut adalah sertifikat tepercaya. Jika sertifikat ditandatangani sendiri, letakkan sertifikat di penyimpanan Akar Tepercaya.
Saat menggunakan IIS di farm web:
- Gunakan berbagi yang dapat diakses semua mesin.
- Sebarkan sertifikat X509 ke setiap mesin. Konfigurasikan perlindungan data dalam kode.
Mengatur kebijakan di seluruh mesin untuk perlindungan data
Sistem perlindungan data memiliki dukungan terbatas guna mengatur kebijakan seluruh mesin default untuk semua aplikasi yang menggunakan API Perlindungan Data. Untuk informasi lebih lanjut, lihat Gambaran umum Perlindungan Data ASP.NET Core.
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 (sub-apk) IIS. Jalur sub-aplikasi menjadi bagian dari URL aplikasi akar.
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 /subapp_path
, gambar yang ditautkan dengan src="~/image.png"
akan dirender sebagai src="/subapp_path/image.png"
. Middleware File Statis dari aplikasi akar tidak memproses permintaan file statis. Permintaan diproses oleh Middleware File Statis sub-aplikasi.
Jika atribut src
aset statis diatur ke jalur absolut (misalnya, src="/image.png"
), tautan akan dirender tanpa basis jalur sub-aplikasi. Middleware File Statis aplikasi akar mencoba menyajikan aset dari akar web aplikasi akar, yang menghasilkan respons 404 - Tidak Ditemukan, kecuali jika aset statis tersedia dari aplikasi akar.
Untuk menghosting aplikasi ASP.NET Core sebagai sub-aplikasi di bawah aplikasi ASP.NET Core lain:
Buat kelompok aplikasi untuk sub-aplikasi. Atur Versi .NET CLR ke Tanpa Kode Aman karena Core Common Language Runtime (CoreCLR) untuk .NET Core di-boot untuk menghosting aplikasi dalam proses pekerja, bukan CLR desktop (.NET CLR).
Tambahkan situs akar di Manajer IIS dengan sub-aplikasi di folder di bawah situs akar.
Klik kanan folder sub-aplikasi di Manajer IIS dan pilih Konversikan ke Aplikasi.
Dalam dialog Tambahkan Aplikasi, gunakan tombol Pilih untuk Kelompok Aplikasi guna menetapkan kelompok aplikasi yang Anda buat untuk sub-aplikasi. Pilih OK.
Penetapan kelompok aplikasi terpisah untuk sub-aplikasi adalah persyaratan saat menggunakan model hosting dalam proses.
Untuk informasi lebih lanjut 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 bagian <system.webServer>
dari 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 pada tingkat server untuk menggunakan pemadatan dinamis, elemen <urlCompression>
dalam file web.config aplikasi dapat menonaktifkannya untuk aplikasi ASP.NET Core.
Untuk mengetahui informasi selengkapnya, lihat topik berikut:
- Referensi konfigurasi untuk <system.webServer>
- ASP.NET Core Module (ANCM) untuk IIS
- Modul IIS dengan ASP.NET Core
Untuk mengatur variabel lingkungan untuk masing-masing aplikasi yang berjalan di kelompok aplikasi yang terisolasi (didukung untuk IIS 10.0 atau yang lebih baru), lihat bagian perintah AppCmd.exe dari topik Variabel Lingkungan <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>
Aplikasi ASP.NET Core dikonfigurasi menggunakan penyedia konfigurasi lain. Untuk informasi lebih lanjut, lihat Konfigurasi dan pengaturan konfigurasi run-time .NET Core
Kelompok Aplikasi
Isolasi kelompok aplikasi ditentukan oleh model hosting:
- Hosting dalam proses: Aplikasi harus berjalan di kelompok aplikasi terpisah.
- Hosting di luar proses: Sebaiknya isolasi aplikasi dari satu sama lain dengan menjalankan setiap aplikasi di kelompok aplikasinya masing-masing.
Dialog Tambahkan Situs Web IIS default ke kelompok aplikasi tunggal per aplikasi. Saat Nama situs diberikan, teks secara otomatis ditransfer ke kotak teks Kelompok aplikasi. Kelompok aplikasi baru dibuat menggunakan nama situs saat situs ditambahkan.
Identity Kelompok Aplikasi
Akun kumpulan identity 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, Proses Pekerja Admin IIS (WAS) membuat akun virtual dengan nama kelompok aplikasi baru dan menjalankan proses pekerja kelompok 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:
Proses manajemen IIS membuat pengidentifikasi aman dengan nama kelompok aplikasi di Sistem Keamanan Windows. Sumber daya dapat diamankan menggunakan ini identity. Namun, ini identity bukan akun pengguna nyata dan tidak muncul di Konsol Manajemen Pengguna Windows.
Jika proses pekerja IIS memerlukan akses yang ditingkatkan ke aplikasi, ubah Daftar Kontrol Akses (ACL) untuk direktori yang berisi aplikasi:
Buka Windows Explorer dan buka direktori.
Klik kanan pada direktori dan pilih Properti.
Di bawah tab Keamanan, pilih tombol Edit lalu tombol Tambahkan.
Pilih tombol Lokasi dan pastikan sistem dipilih.
Masukkan
IIS AppPool\{APP POOL NAME}
, di mana tempat penampung{APP POOL NAME}
adalah nama kelompok aplikasi, di area Masukkan nama objek untuk memilih. Pilih tombol Periksa Nama. Untuk DefaultAppPool periksa nama menggunakanIIS AppPool\DefaultAppPool
. Saat tombol Periksa Nama dipilih, nilaiDefaultAppPool
ditunjukkan di area nama objek. Tidak mungkin memasukkan nama kelompok aplikasi langsung ke area nama objek. Gunakan formatIIS AppPool\{APP POOL NAME}
, di mana tempat penampung{APP POOL NAME}
adalah nama kelompok aplikasi, saat memeriksa nama objek.Pilih OK.
Izin baca & jalankan harus diberikan secara default. Berikan izin tambahan sesuai kebutuhan.
Akses juga dapat diberikan pada perintah menggunakan alat ICACLS. Menggunakan DefaultAppPool
sebagai contoh, perintah berikut digunakan:
ICACLS C:\sites\MyWebApp /grant "IIS AppPool\DefaultAppPool":F
Untuk informasi lebih lanjut, lihat topik icacls.
Dukungan HTTP/2
HTTP/2 didukung dengan ASP.NET Core dalam skenario penyebaran IIS berikut:
- Sedang dalam proses
- Windows Server 2016/Windows 10 atau yang lebih baru; IIS 10 atau yang lebih baru
- TLS 1.2 atau koneksi 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 server Kestrel menggunakan HTTP/1.1.
- TLS 1.2 atau koneksi yang lebih baru
Untuk penyebaran dalam proses saat koneksi HTTP/2 dibuat, HttpRequest.Protocol
melaporkan HTTP/2
. Untuk penyebaran di luar proses saat koneksi HTTP/2 dibuat, HttpRequest.Protocol
melaporkan HTTP/1.1
.
Untuk informasi lebih lanjut 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 lebih lanjut 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 penanganan IIS aplikasi di web.config
guna meneruskan permintaan OPTIONS, lihat Mengaktifkan permintaan lintas-asal di ASP.NET Web API 2: Cara Kerja CORS.
Modul Inisialisasi Aplikasi dan Batas Waktu Menganggur
Ketika dihosting di IIS oleh ASP.NET Core Module versi 2:
- Modul Inisialisasi Aplikasi: dalam proses atau di luar proses aplikasi yang dihosting dapat dikonfigurasi untuk dimulai secara otomatis saat proses pekerja dimulai ulang atau server dimulai ulang.
- Batas Waktu Menganggur: dalam proses aplikasi yang dihosting dapat dikonfigurasi untuk tidak dikenakan batas waktu selama periode tidak aktif.
Modul Inisialisasi Aplikasi
Berlaku untuk aplikasi yang dihosting dalam proses dan di luar proses.
Inisialisasi Aplikasi IIS adalah fitur IIS yang mengirimkan permintaan HTTP ke aplikasi saat kelompok aplikasi dimulai atau didaur ulang. Permintaan memicu aplikasi untuk dimulai. 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:
- Buka Panel Kontrol>Program>Program dan Fitur>Aktifkan atau nonaktifkan fitur Windows (sisi kiri layar).
- Buka Internet Information Services>Layanan W3>Fitur Pengembangan Aplikasi.
- Pilih kotak centang untuk Inisialisasi Aplikasi.
Pada Windows Server 2008 R2 atau yang lebih baru:
- Buka Wizard Tambahkan Peran dan Fitur.
- Di panel Pilih layanan peran, buka node Pengembangan Aplikasi.
- Pilih kotak centang untuk Inisialisasi Aplikasi.
Gunakan salah satu dari pendekatan berikut untuk mengaktifkan Modul Inisialisasi Aplikasi untuk situs:
Dengan Manajer IIS:
- Pilih Kelompok Aplikasi di panel Koneksi.
- Klik kanan kelompok aplikasi milik aplikasi dalam daftar dan pilih Pengaturan Tingkat Lanjut.
- Mode Mulai default adalah OnDemand. Atur Mode Mulai ke AlwaysRunning. Pilih OK.
- Buka node Situs di panel Koneksi.
- Klik kanan aplikasi dan pilih Kelola Situs Web>Pengaturan Tingkat Lanjut.
- Pengaturan Muat Sebelumnya Diaktifkan default adalah False. Atur Muat Sebelumnya Diaktifkan ke True. Pilih OK.
Menggunakan
web.config
, tambahkan elemen<applicationInitialization>
dengandoAppInitAfterRestart
yang diatur ketrue
ke elemen<system.webServer>
di file web.config` aplikasi:<?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 agar tidak menganggur, atur batas waktu menganggur kelompok aplikasi menggunakan Manajer IIS:
- Pilih Kelompok Aplikasi di panel Koneksi.
- Klik kanan kelompok aplikasi milik aplikasi dalam daftar dan pilih Pengaturan Tingkat Lanjut.
- Batas waktu menganggur (menit) default adalah 20 menit. Atur Batas waktu menganggur (menit) ke 0 (nol). Pilih OK.
- Daur ulang proses pekerja.
Untuk mencegah aplikasi yang dihosting di luar proses agar tidak dikenakan batas waktu, gunakan salah satu pendekatan berikut:
- Ping aplikasi dari layanan eksternal agar aplikasi tetap berjalan.
- Jika aplikasi hanya menghosting layanan latar belakang, hindari hosting IIS dan gunakan Layanan Windows untuk menghosting aplikasi ASP.NET Core.
Modul Inisialisasi Aplikasi dan sumber daya tambahan Batas Waktu Menganggur
- Inisialisasi Aplikasi IIS 8.0
- Inisialisasi Aplikasi <applicationInitialization>.
- Pengaturan Model Proses untuk Kelompok Aplikasi <processModel>.
Sumber daya penyebaran untuk administrator IIS
- Dokumentasi IIS
- Mulai Menggunakan Manajer IIS di IIS
- Penyebaran aplikasi .NET Core
- ASP.NET Core Module (ANCM) untuk IIS
- Struktur direktori ASP.NET Core
- Modul IIS dengan ASP.NET Core
- Memecahkan masalah ASP.NET Core pada Azure App Service dan IIS
- Pemecahan masalah kesalahan umum untuk Azure App Service dan IIS dengan ASP.NET Core
Sumber Daya Tambahan:
Untuk pengalaman tutorial tentang menerbitkan aplikasi ASP.NET Core ke server IIS, lihat Menerbitkan aplikasi ASP.NET Core ke IIS.
Memasang .NET Core Hosting Bundle
Sistem operasi yang didukung
Sistem operasi berikut didukung:
- Windows 7 atau yang lebih baru
- Windows Server 2008 R2 atau yang lebih baru
Server HTTP.sys (sebelumnya disebut WebListener) tidak berfungsi dalam konfigurasi proksi terbalik dengan IIS. Gunakan server Kestrel.
Untuk informasi tentang hosting di Azure, lihat Menyebarkan aplikasi ASP.NET Core ke Azure App Service.
Untuk panduan pemecahan masalah, lihat Memecahkan masalah dan mendebug 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:
- Memerlukan ruang alamat memori virtual yang lebih besar yang tersedia untuk aplikasi 64-bit.
- Membutuhkan ukuran tumpukan IIS yang lebih besar.
- Memiliki dependensi native 64-bit.
Gunakan 64-bit (x64) .NET Core SDK untuk menerbitkan aplikasi 64-bit. Runtime bahasa umum 64-bit harus ada di sistem host.
ASP.NET Core dikirimkan dengan server Kestrel, 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 server Kestrel.
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 ketika permintaan pertama tiba dan memulai ulang aplikasi jika aplikasi dimatikan atau mengalami crash. Ini pada dasarnya merupakan perilaku yang sama seperti yang terlihat pada aplikasi yang berjalan dalam proses yang dikelola oleh Windows Process Activation Service (WAS).
Diagram berikut mengilustrasikan hubungan antara IIS, ASP.NET Core Module, dan aplikasi yang dihosting di luar proses:
Permintaan datang dari web ke driver HTTP.sys mode kernel. Driver merutekan permintaan ke IIS pada port situs web yang dikonfigurasi, 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 Middleware Integrasi IIS mengonfigurasi server yang akan didengarkan di http://localhost:{port}
. Pemeriksaan tambahan dilakukan, dan permintaan yang tidak berasal dari modul ditolak. Modul tidak mendukung penerusan HTTPS, jadi permintaan diteruskan melalui HTTP meskipun diterima oleh IIS melalui HTTPS.
Setelah Kestrel mengambil permintaan dari modul, permintaan didorong ke dalam alur middleware ASP.NET Core. Alur middleware menangani permintaan dan meneruskannya sebagai instans HttpContext
ke logika aplikasi. Middleware yang ditambahkan oleh Integrasi IIS memperbarui skema, IP jarak jauh, dan basis jalur ke akun untuk meneruskan permintaan ke Kestrel. Respons aplikasi diteruskan kembali ke IIS, yang mendorongnya kembali ke klien HTTP yang menginisiasi permintaan.
CreateDefaultBuilder
mengonfigurasi server Kestrel sebagai server web dan mengaktifkan Integrasi IIS dengan mengonfigurasi jalur dasar dan port untuk ASP.NET Core Module.
ASP.NET Core Module menghasilkan port dinamis untuk ditetapkan ke proses backend. CreateDefaultBuilder
memanggil metode UseIISIntegration. UseIISIntegration
mengonfigurasi Kestrel untuk mendengarkan pada port dinamis di alamat IP localhost (127.0.0.1
). Jika port dinamis adalah 1234, Kestrel mendengarkan di 127.0.0.1:1234
. Konfigurasi ini menggantikan konfigurasi URL lain yang disediakan oleh:
UseUrls
- Listen API Kestrel
- Konfigurasi (atau baris perintah--opsi url)
Panggilan ke UseUrls
atau API Listen
Kestrel 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 ASP.NET Core Module, lihat ASP.NET Core Module (ANCM) untuk IIS.
Untuk informasi lebih lanjut tentang hosting, lihat Menghosting 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 lebih lanjut tentang CreateDefaultBuilder
, lihat ASP.NET Core Web Host.
Opsi IIS
Opsi | Default | Pengaturan |
---|---|---|
AutomaticAuthentication |
true |
Jika true , Server IIS mengatur HttpContext.User yang diautentikasi oleh Autentikasi Windows. Jika false , server hanya menyediakan identity untuk HttpContext.User dan merespons tantangan ketika secara eksplisit diminta oleh AuthenticationScheme . Autentikasi Windows harus diaktifkan di IIS agar AutomaticAuthentication berfungsi. Untuk informasi lebih lanjut, lihat Autentikasi Windows. |
AuthenticationDisplayName |
null |
Mengatur nama tampilan yang ditampilkan kepada pengguna di halaman masuk. |
Untuk mengonfigurasi opsi IIS, sertakan konfigurasi layanan untuk IISOptions di ConfigureServices. Contoh berikut mencegah aplikasi mengisi HttpContext.Connection.ClientCertificate
:
services.Configure<IISOptions>(options =>
{
options.ForwardClientCertificate = false;
});
Opsi | Default | Pengaturan |
---|---|---|
AutomaticAuthentication |
true |
Jika true , Middleware Integrasi IIS mengatur HttpContext.User yang diautentikasi oleh Autentikasi Windows. Jika false , middleware hanya menyediakan identity untuk HttpContext.User dan merespons tantangan ketika secara eksplisit diminta oleh AuthenticationScheme . Autentikasi Windows harus diaktifkan di IIS agar AutomaticAuthentication berfungsi. Untuk informasi lebih lanjut, lihat topik Autentikasi Windows. |
AuthenticationDisplayName |
null |
Mengatur nama tampilan yang ditampilkan kepada pengguna di halaman masuk. |
ForwardClientCertificate |
true |
Jika true dan header permintaan MS-ASPNETCORE-CLIENTCERT ada, HttpContext.Connection.ClientCertificate akan terisi. |
Skenario server proksi dan penyeimbang beban
Middleware Integrasi IIS, yang mengonfigurasi Middleware Header yang Diteruskan, dan ASP.NET Core Module 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 penyeimbang beban. 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 ASP.NET Core Module dan dipindahkan ke output yang diterbitkan.
Jika file web.config ada dalam proyek, file diubah dengan processPath dan argumen yang benar untuk mengonfigurasi ASP.NET Core Module dan dipindahkan ke output yang diterbitkan. Transformasi tidak mengubah pengaturan konfigurasi IIS dalam file.
File web.config mungkin 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 agar Web SDK tidak 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 lebih lanjut, lihat ASP.NET Core Module (ANCM) untuk IIS.
Lokasi file web.config
Untuk menyiapkan ASP.NET Core Module 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. Saat file web.config ada dan situs dimulai secara normal, IIS tidak menyajikan file sensitif ini jika diminta. Jika file web.config tidak ada, salah diberi nama, atau tidak dapat mengonfigurasi situs untuk startup yang normal, IIS mungkin menyajikan file sensitif secara publik.
File web.config harus selalu ada dalam penyebaran, diberi nama dengan benar, dan dapat mengonfigurasi situs untuk startup yang normal. Jangan pernah menghapus file web.config dari penyebaran produksi.
Mengubah web.config
Jika Anda perlu mengubah web.config saat penerbitan (misalnya, mengatur 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.
Gunakan wizard Tambahkan Peran dan Fitur dari menu Kelola atau tautan di Pengelola Server. Pada langkah Peran Server, centang kotak untuk Server Web (IIS).
Setelah langkah Fitur, langkah Layanan peran akan dimuat untuk Server Web (IIS). Pilih layanan peran IIS yang diinginkan atau terima layanan peran default yang disediakan.
Autentikasi Windows (Opsional)
Untuk mengaktifkan Autentikasi Windows, luaskan node berikut: Server Web>Keamanan. Pilih fitur Autentikasi Windows. Untuk informasi lebih lanjut, lihat Autentikasi Windows <windowsAuthentication> dan Mengonfigurasi autentikasi Windows.WebSocket (Opsional)
WebSocket didukung dengan ASP.NET Core 1.1 atau yang lebih baru. Untuk mengaktifkan WebSocket, perluas node berikut: Server Web>Pengembangan Aplikasi. Pilih fitur Protokol WebSocket. Untuk informasi lebih lanjut, lihat WebSocket.Lanjutkan ke langkah Konfirmasi untuk memasang peran dan layanan server web. Tindakan mulai ulang server/IIS tidak diperlukan setelah memasang peran Server Web (IIS).
Sistem operasi desktop Windows
Aktifkan IIS Management Console dan Layanan W3.
Buka Panel Kontrol>Program>Program dan Fitur>Aktifkan atau nonaktifkan fitur Windows (sisi kiri layar).
Buka node Internet Information Services. Buka node Alat Manajemen Web.
Centang kotak untuk IIS Management Console.
Centang kotak untuk Layanan W3.
Terima fitur default untuk Layanan W3 atau kustomisasi fitur IIS.
Autentikasi Windows (Opsional)
Untuk mengaktifkan Autentikasi Windows, luaskan node berikut: Layanan W3>Keamanan. Pilih fitur Autentikasi Windows. Untuk informasi lebih lanjut, lihat Autentikasi Windows <windowsAuthentication> dan Mengonfigurasi autentikasi Windows.WebSocket (Opsional)
WebSocket didukung dengan ASP.NET Core 1.1 atau yang lebih baru. Untuk mengaktifkan WebSocket, luaskan node berikut: Layanan W3>Fitur Pengembangan Aplikasi. Pilih fitur Protokol WebSocket. Untuk informasi lebih lanjut, lihat WebSocket.Jika penginstalan IIS memerlukan tindakan mulai ulang, mulai ulang sistem.
Memasang .NET Core Hosting Bundle
Pasang .NET Core Hosting Bundle pada sistem hosting. Bundel memasang .NET Core Runtime, .NET Core Library, dan ASP.NET Core Module. Modul ini memungkinkan aplikasi ASP.NET Core berjalan di belakang IIS.
Penting
Jika Hosting Bundle dipasang sebelum IIS, penginstalan bundel harus diperbaiki. Jalankan lagi alat penginstal Hosting Bundle setelah memasang IIS.
Jika Hosting Bundle dipasang setelah memasang versi 64-bit (x64) .NET Core, SDK mungkin tampak tidak ada (Tidak ada .NET Core SDK yang terdeteksi). Untuk mengatasi masalah tersebut, lihat Memecahkan masalah dan mendebug proyek ASP.NET Core.
Unduh
- Buka halaman Unduh .NET Core.
- Pilih versi .NET Core yang diinginkan.
- Di kolom Jalankan aplikasi - Runtime bahasa umum, temukan baris versi runtime bahasa umum .NET Core yang diinginkan.
- Unduh alat penginstal menggunakan tautan Hosting Bundle.
Peringatan
Beberapa alat penginstal berisi versi rilis yang telah mencapai akhir masa pakainya (EOL) dan tidak lagi didukung oleh Microsoft. Untuk informasi lebih lanjut, lihat kebijakan dukungan.
Memasang Hosting Bundle
Jalankan alat penginstal di server. Parameter berikut tersedia saat menjalankan alat penginstal dari shell perintah administrator:
OPT_NO_ANCM=1
:Lewati penginstalan ASP.NET Core Module.OPT_NO_RUNTIME=1
: Lewati penginstalan runtime bahasa umum .NET Core. Digunakan saat server hanya menghosting penyebaran mandiri (SCD).OPT_NO_SHAREDFX=1
: Lewati penginstalan ASP.NET Shared Framework (runtime bahasa umum ASP.NET). Digunakan saat server hanya menghosting penyebaran mandiri (SCD).OPT_NO_X86=1
: Lewati penginstalan runtime bahasa umum 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 pasang kedua runtime bahasa umum.OPT_NO_SHARED_CONFIG_CHECK=1
: Nonaktifkan pemeriksaan untuk menggunakan Konfigurasi Bersama IIS saat konfigurasi bersama (applicationHost.config) berada di mesin yang sama dengan penginstalan IIS. Hanya tersedia untuk alat penginstal Hosting Bundler ASP.NET Core 2.2 atau yang lebih baru. Untuk informasi lebih lanjut, lihat ASP.NET Core Module (ANCM) untuk IIS.
Mulai ulang sistem atau jalankan perintah berikut di shell perintah:
net stop was /y net start w3svc
Tindakan memulai ulang IIS akan mengambil perubahan pada sistem PATH, yang merupakan variabel lingkungan, yang dibuat oleh alat penginstal.
Tidak perlu secara manual menghentikan masing-masing situs di IIS saat memasang Hosting Bundle. Aplikasi yang dihosting (situs IIS) dimulai ulang saat IIS dimulai ulang. Aplikasi dimulai kembali saat menerima permintaan pertama, termasuk dari Modul Inisialisasi Aplikasi.
ASP.NET Core mengadopsi perilaku roll-forward untuk rilis patch dari 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. Jika IIS tidak dimulai ulang, aplikasi memulai ulang dan menunjukkan perilaku roll-forward saat proses pekerja mereka didaur ulang dan mereka menerima permintaan pertama.
Catatan
Untuk informasi tentang Konfigurasi Bersama IIS, lihat ASP.NET Core Module dengan Konfigurasi Bersama IIS.
Memasang Web Deploy saat menerbitkan dengan Visual Studio
Saat menyebarkan aplikasi ke server dengan Web Deploy, pasang versi terbaru Web Deploy di server. Untuk menginstal Web Deploy, gunakan Web Platform Installer (WebPI) atau Unduhan IIS: Web Deploy. Metode pilihannya adalah menggunakan WebPI. WebPI menawarkan penyiapan mandiri dan konfigurasi untuk penyedia hosting.
Membuat situs IIS
Pada sistem hosting, buat folder untuk memuat folder dan file aplikasi yang diterbitkan. Pada langkah berikut, jalur folder disediakan ke IIS sebagai jalur fisik ke aplikasi. Untuk informasi lebih lanjut tentang folder penyebaran dan tata letak file aplikasi, lihat Struktur direktori ASP.NET Core.
Di Manajer IIS, buka node server di panel Koneksi. Klik kanan folder Situs. Pilih Tambahkan Situs Web dari menu kontekstual.
Berikan Nama situs dan atur Jalur fisik ke folder penyebaran aplikasi. Berikan konfigurasi Pengikatan dan buat situs web dengan memilih Oke:
Peringatan
Pengikatan wildcard tingkat atas (
http://*:80/
danhttp://+:80
) tidak boleh digunakan. Pengikatan wildcard tingkat atas dapat mengekspos aplikasi Anda terhadap kerentanan keamanan. Ini berlaku untuk wildcard kuat dan lemah. Gunakan nama host eksplisit alih-alih wildcard. Pengikatan wildcard subdomain (misalnya,*.mysub.com
) tidak memiliki risiko keamanan ini jika Anda mengontrol seluruh domain induk (alih-alih*.com
, yang rentan). Lihat RFC 9110: Semantik HTTP (Bagian 7.2: Host dan :otoritas) untuk informasi selengkapnya.Di bawah node server, pilih Kelompok Aplikasi.
Klik kanan kelompok aplikasi situs dan pilih Pengaturan Dasar dari menu kontekstual.
Di jendela Edit Kelompok Aplikasi, atur Versi .NET CLR ke Tanpa Kode Aman:
ASP.NET Core berjalan dalam proses terpisah dan mengelola runtime bahasa umum. ASP.NET Core tidak bergantung pada 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 Aman sifatnya opsional tetapi disarankan.
ASP.NET Core 2.2 atau yang lebih baru: Untuk penyebaran mandiri 64-bit (x64) yang menggunakan model hosting dalam proses, nonaktifkan kelompok aplikasi untuk proses 32-bit (x86).
Di bilah sisi Tindakan Manajer IIS >Kelompok Aplikasi, pilih Atur Default Kelompok Aplikasi atau Pengaturan Tingkat Lanjut. Cari Aktifkan Aplikasi 32-Bit dan atur nilainya ke
False
. Pengaturan ini tidak memengaruhi aplikasi yang disebarkan untuk hosting di luar proses.Konfirmasikan model identity proses memiliki izin yang tepat.
Jika default identity kumpulan aplikasi (ModelIdentity> Proses) diubah dari ApplicationPoolIdentity ke yang lainidentity, verifikasi bahwa yang baru identity memiliki izin yang diperlukan untuk mengakses folder aplikasi, database, dan sumber daya lain yang diperlukan. Misalnya, kelompok aplikasi memerlukan akses baca dan tulis ke folder tempat aplikasi membaca dan menulis file.
Konfigurasi Autentikasi Windows (Opsional)
Untuk informasi lebih lanjut, lihat Mengonfigurasi autentikasi Windows.
Menyebarkan aplikasi
Sebarkan aplikasi ke folder Jalur fisik IIS yang dibuat di bagian Membuat situs IIS. Web Deploy adalah mekanisme yang disarankan untuk penyebaran, tetapi ada beberapa opsi untuk memindahkan aplikasi dari folder publish proyek ke folder penyebaran sistem hosting.
Web Deploy dengan Visual Studio
Lihat topik Profil penerbitan Visual Studio untuk penyebaran aplikasi ASP.NET Core guna 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:
Web Deploy di luar Visual Studio
Web Deploy juga dapat digunakan di luar Visual Studio dari baris perintah. Untuk informasi lebih lanjut, lihat Alat Web Deployment.
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 lebih lanjut 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 ke nama Host IIS di Port 80
.www.mysite.com
Permintaan dibuat untuk http://www.mysite.com
:
File penyebaran yang dikunci
File dalam folder penyebaran dikunci saat aplikasi sedang berjalan. File yang dikunci tidak dapat ditimpa selama penyebaran. Untuk merilis file yang dikunci dalam penyebaran, hentikan kelompok aplikasi menggunakan salah satu pendekatan berikut:
Gunakan Web Deploy dan referensikan ke
Microsoft.NET.Sdk.Web
dalam file proyek. Fileapp_offline.htm
ditempatkan di akar direktori aplikasi web. Jika file ada, ASP.NET Core Module akan dengan lancar mematikan aplikasi dan menyajikan fileapp_offline.htm
selama penyebaran. Untuk informasi lebih lanjut, lihat Referensi konfigurasi ASP.NET Core Module.Hentikan kelompok 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. Meskipun API Perlindungan Data tidak dipanggil oleh kode pengguna, perlindungan data harus dikonfigurasi dengan skrip penyebaran atau dalam kode pengguna untuk membuat penyimpanan kunci kriptografik yang persisten. Jika perlindungan data tidak dikonfigurasi, kunci disimpan di memori dan dibuang saat aplikasi dimulai ulang.
Jika ring kunci disimpan dalam memori saat aplikasi dimulai ulang:
- Semua token autentikasi berbasis cookie menjadi tidak valid.
- Pengguna diminta untuk masuk lagi pada permintaan berikutnya.
- Data apa pun yang dilindungi dengan ring kunci tidak dapat lagi didekripsi. Ini mungkin termasuk token CSRF dan cookie ASP.NET Core MVC TempData.
Untuk mengonfigurasi perlindungan data di bawah IIS guna mempertahankan ring 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 kelompok aplikasi.
Untuk penginstalan IIS non-webfarm mandiri, skrip PowerShell Perlindungan Data Provision-AutoGenKeys.ps1 dapat digunakan untuk setiap kelompok 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 kelompok aplikasi dari aplikasi. Kunci dienkripsi saat rest menggunakan DPAPI dengan kunci di seluruh komputer.
Dalam skenario farm web, aplikasi dapat dikonfigurasi untuk menggunakan jalur UNC untuk menyimpan ring kunci perlindungan datanya. Secara default, kunci perlindungan data tidak dienkripsi. Pastikan bahwa izin file untuk berbagi jaringan terbatas pada akun Windows tempat aplikasi berjalan. Sertifikat X509 dapat digunakan untuk melindungi kunci di rest. Pertimbangkan mekanisme untuk mengizinkan pengguna mengunggah sertifikat: Tempatkan sertifikat ke dalam penyimpanan sertifikat tepercaya pengguna dan pastikan sertifikat tersebut tersedia di semua mesin tempat aplikasi pengguna berjalan. Lihat Mengonfigurasi Perlindungan Data ASP.NET Core untuk detailnya.
Mengonfigurasikan Kelompok Aplikasi IIS untuk memuat profil pengguna
Pengaturan ini ada di bagian Model Proses di bawah Pengaturan Tingkat Lanjut untuk kelompok aplikasi. Atur Muat Profil Pengguna ke
True
. Jika diatur keTrue
, 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 kelompok aplikasi juga harus diaktifkan. Nilai default
setProfileEnvironment
adalahtrue
. Dalam beberapa skenario (misalnya, OS Windows),setProfileEnvironment
diatur kefalse
. Jika kunci tidak disimpan di direktori profil pengguna seperti yang diharapkan:- Buka folder %windir%/system32/inetsrv/config.
- Buka file applicationHost.config.
- Temukan
<system.applicationHost><applicationPools><applicationPoolDefaults><processModel>
elemennya. - Konfirmasikan bahwa atribut
setProfileEnvironment
tidak ada, yang membuat nilai diatur ke defaulttrue
, atau secara eksplisit mengatur nilai atribut ketrue
.
Menggunakan sistem file sebagai penyimpanan ring kunci
Sesuaikan kode aplikasi untuk menggunakan sistem file sebagai penyimpanan ring kunci. Gunakan sertifikat X509 untuk melindungi ring kunci dan pastikan sertifikat tersebut adalah sertifikat tepercaya. Jika sertifikat ditandatangani sendiri, letakkan sertifikat di penyimpanan Akar Tepercaya.
Saat menggunakan IIS di farm web:
- Gunakan berbagi yang dapat diakses semua mesin.
- Sebarkan sertifikat X509 ke setiap mesin. Konfigurasikan perlindungan data dalam kode.
Mengatur kebijakan di seluruh mesin untuk perlindungan data
Sistem perlindungan data memiliki dukungan terbatas guna mengatur kebijakan seluruh mesin default untuk semua aplikasi yang menggunakan API Perlindungan Data. Untuk informasi lebih lanjut, lihat Gambaran umum Perlindungan Data ASP.NET Core.
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 (sub-apk) IIS. Jalur sub-aplikasi menjadi bagian dari URL aplikasi akar.
Sub-aplikasi tidak boleh menyertakan ASP.NET Core Module sebagai penanganan. Jika modul ditambahkan sebagai penanganan dalam file web.config sub-aplikasi, Kesalahan Server Internal 500.19 yang mereferensikan ke file konfigurasi yang salah akan 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 secara eksplisit penanganan yang diwarisi 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 /subapp_path
, gambar yang ditautkan dengan src="~/image.png"
akan dirender sebagai src="/subapp_path/image.png"
. Middleware File Statis dari aplikasi akar tidak memproses permintaan file statis. Permintaan diproses oleh Middleware File Statis sub-aplikasi.
Jika atribut src
aset statis diatur ke jalur absolut (misalnya, src="/image.png"
), tautan akan dirender tanpa basis jalur sub-aplikasi. Middleware File Statis aplikasi akar mencoba menyajikan aset dari akar web aplikasi akar, yang menghasilkan respons 404 - Tidak Ditemukan, kecuali jika aset statis tersedia dari aplikasi akar.
Untuk menghosting aplikasi ASP.NET Core sebagai sub-aplikasi di bawah aplikasi ASP.NET Core lain:
Buat kelompok aplikasi untuk sub-aplikasi. Atur Versi .NET CLR ke Tanpa Kode Aman karena Core Common Language Runtime (CoreCLR) untuk .NET Core di-boot untuk menghosting aplikasi dalam proses pekerja, bukan CLR desktop (.NET CLR).
Tambahkan situs akar di Manajer IIS dengan sub-aplikasi di folder di bawah situs akar.
Klik kanan folder sub-aplikasi di Manajer IIS dan pilih Konversikan ke Aplikasi.
Dalam dialog Tambahkan Aplikasi, gunakan tombol Pilih untuk Kelompok Aplikasi guna menetapkan kelompok aplikasi yang Anda buat untuk sub-aplikasi. Pilih OK.
Penetapan kelompok aplikasi terpisah untuk sub-aplikasi adalah persyaratan saat menggunakan model hosting dalam proses.
Untuk informasi lebih lanjut 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 bagian <system.webServer>
dari 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 pada tingkat server untuk menggunakan pemadatan dinamis, elemen <urlCompression>
dalam file web.config aplikasi dapat menonaktifkannya untuk aplikasi ASP.NET Core.
Untuk mengetahui informasi selengkapnya, lihat topik berikut:
- Referensi konfigurasi untuk <system.webServer>
- ASP.NET Core Module (ANCM) untuk IIS
- Modul IIS dengan ASP.NET Core
Untuk mengatur variabel lingkungan untuk masing-masing aplikasi yang berjalan di kelompok aplikasi yang terisolasi (didukung untuk IIS 10.0 atau yang lebih baru), lihat bagian perintah AppCmd.exe dari topik Variabel Lingkungan <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>
Aplikasi ASP.NET Core dikonfigurasi menggunakan penyedia konfigurasi lain. Untuk informasi lebih lanjut, lihat Konfigurasi.
Kelompok Aplikasi
Saat menghosting beberapa situs web di server, sebaiknya isolasi aplikasi satu sama lain dengan menjalankan setiap aplikasi di kelompok aplikasinya masing-masing. Dialog Tambahkan Situs Web IIS default ke konfigurasi ini. Saat Nama situs diberikan, teks secara otomatis ditransfer ke kotak teks Kelompok aplikasi. Kelompok aplikasi baru dibuat menggunakan nama situs saat situs ditambahkan.
Identity Kelompok Aplikasi
Akun kumpulan identity 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, Proses Pekerja Admin IIS (WAS) membuat akun virtual dengan nama kelompok aplikasi baru dan menjalankan proses pekerja kelompok 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:
Proses manajemen IIS membuat pengidentifikasi aman dengan nama kelompok aplikasi di Sistem Keamanan Windows. Sumber daya dapat diamankan menggunakan ini identity. Namun, ini identity bukan akun pengguna nyata dan tidak muncul di Konsol Manajemen Pengguna Windows.
Jika proses pekerja IIS memerlukan akses yang ditingkatkan ke aplikasi, ubah Daftar Kontrol Akses (ACL) untuk direktori yang berisi aplikasi:
Buka Windows Explorer dan buka direktori.
Klik kanan pada direktori dan pilih Properti.
Di bawah tab Keamanan, pilih tombol Edit lalu tombol Tambahkan.
Pilih tombol Lokasi dan pastikan sistem dipilih.
Masukkan IIS AppPool\<app_pool_name> di area Masukkan nama objek yang akan dipilih. 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 mungkin memasukkan nama kelompok aplikasi langsung ke area nama objek. Gunakan format IIS AppPool\<app_pool_name> saat memeriksa nama objek.
Pilih OK.
Izin baca & jalankan harus diberikan secara default. Berikan izin tambahan sesuai kebutuhan.
Akses juga dapat diberikan pada perintah menggunakan alat ICACLS. Menggunakan DefaultAppPool sebagai contoh, perintah berikut digunakan:
ICACLS C:\sites\MyWebApp /grant "IIS AppPool\DefaultAppPool":F
Untuk informasi lebih lanjut, 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 server Kestrel menggunakan HTTP/1.1.
- Kerangka kerja target: Tidak berlaku untuk penyebaran di luar proses, karena koneksi HTTP/2 ditangani sepenuhnya oleh IIS.
- TLS 1.2 atau koneksi 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 lebih lanjut 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. Guna mempelajari cara mengonfigurasi penanganan 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
- Dokumentasi IIS
- Mulai Menggunakan Manajer IIS di IIS
- Penyebaran aplikasi .NET Core
- ASP.NET Core Module (ANCM) untuk IIS
- Struktur direktori ASP.NET Core
- Modul IIS dengan ASP.NET Core
- Memecahkan masalah ASP.NET Core pada Azure App Service dan IIS
- Pemecahan masalah kesalahan umum untuk Azure App Service dan IIS dengan ASP.NET Core
Sumber Daya Tambahan:
ASP.NET Core