Konfigurasi lanjutan ASP.NET Core Module dan IIS
Catatan
Ini bukan versi terbaru dari artikel ini. Untuk rilis saat ini, lihat versi .NET 9 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 9 dari artikel ini.
Artikel ini membahas opsi dan skenario konfigurasi tingkat lanjut untuk Modul Inti dan IIS ASP.NET.
Mengubah ukuran tumpukan
Hanya berlaku saat menggunakan model hosting dalam proses.
Konfigurasikan ukuran tumpukan terkelola menggunakan stackSize
pengaturan dalam byte dalam web.config
file. Ukuran defaultnya adalah 1.048.576 byte (1 MB). Contoh berikut mengubah ukuran tumpukan menjadi 2 MB (2.097.152 byte):
<aspNetCore processPath="dotnet"
arguments=".\MyApp.dll"
stdoutLogEnabled="false"
stdoutLogFile="\\?\%home%\LogFiles\stdout"
hostingModel="inprocess">
<handlerSettings>
<handlerSetting name="stackSize" value="2097152" />
</handlerSettings>
</aspNetCore>
Melarang rotasi pada konfigurasi
Pengaturan disallowRotationOnConfigChange
ini ditujukan untuk skenario biru/hijau di mana perubahan pada konfigurasi global tidak boleh menyebabkan semua situs mendaur ulang. Ketika bendera ini benar, hanya perubahan yang relevan dengan situs itu sendiri yang akan menyebabkannya mendaur ulang. Misalnya, situs mendaur ulang jika web.config-nya berubah atau sesuatu perubahan yang relevan dengan jalur situs dari perspektif IIS. Tetapi perubahan umum pada applicationHost.config tidak akan menyebabkan aplikasi didaur ulang. Contoh berikut mengatur pengaturan ini ke true:
<aspNetCore processPath="dotnet"
arguments=".\MyApp.dll"
stdoutLogEnabled="false"
stdoutLogFile="\\?\%home%\LogFiles\stdout"
hostingModel="inprocess">
<handlerSettings>
<handlerSetting name="disallowRotationOnConfigChange" value="true" />
</handlerSettings>
</aspNetCore>
Pengaturan ini sesuai dengan API ApplicationPoolRecycling.DisallowRotationOnConfigChange
Mengurangi kemungkinan 503 selama daur ulang aplikasi
Secara default, ada penundaan satu detik antara ketika IIS diberi tahu tentang daur ulang atau matikan dan ketika ANCM memberi tahu server terkelola untuk memulai pematian. Penundaan dapat dikonfigurasi melalui ANCM_shutdownDelay
variabel lingkungan atau dengan mengatur shutdownDelay
pengaturan handler. Kedua nilai berada dalam milidetik. Penundaan ini terutama untuk mengurangi kemungkinan perlombaan di mana:
- IIS belum mulai mengantre permintaan untuk masuk ke aplikasi baru.
- ANCM mulai menolak permintaan baru yang masuk ke aplikasi lama.
Pengaturan ini tidak berarti permintaan masuk akan tertunda oleh jumlah ini. Pengaturan menunjukkan bahwa instans aplikasi lama akan mulai dimatikan setelah batas waktu terjadi. Mesin atau mesin yang lebih lambat dengan penggunaan CPU yang lebih berat mungkin perlu menyesuaikan nilai ini untuk mengurangi kemungkinan 503.
Contoh berikut mengatur penundaan menjadi 5 detik:
<aspNetCore processPath="dotnet"
arguments=".\MyApp.dll"
stdoutLogEnabled="false"
stdoutLogFile="\\?\%home%\LogFiles\stdout"
hostingModel="inprocess">
<handlerSettings>
<handlerSetting name="shutdownDelay" value="5000" />
</handlerSettings>
</aspNetCore>
Konfigurasi proksi menggunakan protokol HTTP dan token pemasangan
Hanya berlaku untuk hosting di luar proses.
Proksi yang dibuat antara Modul ASP.NET Core dan Kestrel menggunakan protokol HTTP. Tidak ada risiko menguping lalu lintas antara modul dan Kestrel dari lokasi di luar server.
Token pemasangan digunakan untuk menjamin bahwa permintaan yang diterima oleh Kestrel diproksi oleh IIS dan tidak berasal dari beberapa sumber lain. Token pemasangan dibuat dan diatur ke dalam variabel lingkungan (ASPNETCORE_TOKEN
) oleh modul. Token pemasangan juga diatur ke header (MS-ASPNETCORE-TOKEN
) pada setiap permintaan yang diproksi. Middleware IIS memeriksa setiap permintaan yang diterimanya untuk mengonfirmasi bahwa nilai header token pemasangan cocok dengan nilai variabel lingkungan. Jika nilai token tidak cocok, permintaan dicatat dan ditolak. Variabel lingkungan token pemasangan dan lalu lintas antara modul dan Kestrel tidak dapat diakses dari lokasi di luar server. Tanpa mengetahui nilai token pemasangan, cyberattacker tidak dapat mengirimkan permintaan yang melewati pemeriksaan di Middleware IIS.
ASP.NET Modul Inti dengan Konfigurasi Bersama IIS
Penginstal Modul ASP.NET Core berjalan dengan hak istimewa TrustedInstaller
akun. Karena akun sistem lokal tidak memiliki izin modifikasi untuk jalur berbagi yang digunakan oleh Konfigurasi Bersama IIS, penginstal melemparkan kesalahan akses yang ditolak saat mencoba mengonfigurasi pengaturan modul dalam applicationHost.config
file pada berbagi.
Saat menggunakan Konfigurasi Bersama IIS pada komputer yang sama dengan penginstalan IIS, jalankan penginstal Bundel Hosting Inti ASP.NET dengan parameter yang OPT_NO_SHARED_CONFIG_CHECK
diatur ke 1
:
dotnet-hosting-{VERSION}.exe OPT_NO_SHARED_CONFIG_CHECK=1
Saat jalur ke konfigurasi bersama tidak berada di komputer yang sama dengan penginstalan IIS, ikuti langkah-langkah berikut:
- Nonaktifkan Konfigurasi Bersama IIS.
- Jalankan alat penginstal.
- Ekspor file yang diperbarui
applicationHost.config
ke berbagi file. - Aktifkan kembali Konfigurasi Bersama IIS.
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 cincin kunci Perlindungan Data 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 kumpulan 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 kumpulan aplikasi 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 cincin kunci Perlindungan Datanya. Secara default, kunci tidak dienkripsi. Pastikan bahwa izin file untuk berbagi jaringan terbatas pada akun Windows yang dijalankan aplikasi. Sertifikat X509 dapat digunakan untuk melindungi kunci di rest. 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. Untuk informasi selengkapnya, lihat Mengonfigurasi ASP.NET Core Data Protection.
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 dipertahankan ke%LOCALAPPDATA%/ASP.NET/DataProtection-Keys
folder.Atribut kumpulan
setProfileEnvironment
aplikasi juga harus diaktifkan. Nilai defaultsetProfileEnvironment
adalahtrue
. Dalam beberapa skenario (misalnya, OS Windows),setProfileEnvironment
diatur kefalse
. Jika kunci tidak disimpan di direktori profil pengguna seperti yang diharapkan:- Navigasi ke 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
.
- Navigasi ke folder
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. Mengonfigurasi Perlindungan Data dalam kode.
Mengatur kebijakan di seluruh komputer untuk Perlindungan Data
Sistem Perlindungan Data memiliki dukungan terbatas untuk mengatur kebijakan di seluruh komputer default untuk semua aplikasi yang menggunakan API Perlindungan Data. Untuk informasi lebih lanjut, lihat Gambaran umum Perlindungan Data ASP.NET Core.
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.
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 (~/
) di MVC dan Razor Pages. 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.
Catatan
Razor komponen (.razor
) tidak boleh menggunakan notasi tilde-slash. Untuk informasi selengkapnya, lihat Blazor dokumentasi jalur dasar 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.
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}
format, 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 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 untuk memberikan izin baca dan jalankan ke MyWebApp
folder, subfolder, dan file:
ICACLS C:\sites\MyWebApp /grant "IIS AppPool\DefaultAppPool:(OI)(CI)RX"
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 Diam: Aplikasi yang dihosting dalam proses dapat dikonfigurasi untuk tidak kehabisan 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 keAlwaysRunning
. Pilih OK. - Buka node Situs di panel Koneksi.
- Klik kanan aplikasi dan pilih Kelola Situs Web>Pengaturan Tingkat Lanjut.
- Pengaturan Preload Enabled default adalah
False
. Atur Pramuat Diaktifkan keTrue
. Pilih OK.
Menggunakan
web.config
, tambahkan<applicationInitialization>
elemen dengandoAppInitAfterRestart
diatur ketrue
ke<system.webServer>
elemen dalam file aplikasiweb.config
:<?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 Diam default (menit) adalah
20
menit. Atur Batas Waktu Diam (menit) ke0
(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
<applicationInitialization>
Aplikasi . - Pengaturan Model Proses untuk Kumpulan
<processModel>
Aplikasi .
Modul, skema, dan lokasi file konfigurasi
Modul
IIS (x86/amd64):
%windir%\System32\inetsrv\aspnetcore.dll
%windir%\SysWOW64\inetsrv\aspnetcore.dll
%ProgramFiles%\IIS\Asp.Net Core Module\V2\aspnetcorev2.dll
%ProgramFiles(x86)%\IIS\Asp.Net Core Module\V2\aspnetcorev2.dll
IIS Express (x86/amd64):
%ProgramFiles%\IIS Express\aspnetcore.dll
%ProgramFiles(x86)%\IIS Express\aspnetcore.dll
%ProgramFiles%\IIS Express\Asp.Net Core Module\V2\aspnetcorev2.dll
%ProgramFiles(x86)%\IIS Express\Asp.Net Core Module\V2\aspnetcorev2.dll
Skema
IIS
%windir%\System32\inetsrv\config\schema\aspnetcore_schema.xml
%windir%\System32\inetsrv\config\schema\aspnetcore_schema_v2.xml
IIS Express
%ProgramFiles%\IIS Express\config\schema\aspnetcore_schema.xml
%ProgramFiles%\IIS Express\config\schema\aspnetcore_schema_v2.xml
Konfigurasi
IIS
%windir%\System32\inetsrv\config\applicationHost.config
IIS Express
Visual Studio:
{APPLICATION ROOT}\.vs\config\applicationHost.config
iisexpress.exe CLI:
%USERPROFILE%\Documents\IISExpress\config\applicationhost.config
File dapat ditemukan dengan mencari aspnetcore
dalam applicationHost.config
file.
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, lihat Unduhan IIS: Web Deploy.
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.
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, 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 kumpulan 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.
Salinan bayangan
Rakitan aplikasi penyalinan bayangan ke ASP.NET Core Module (ANCM) untuk IIS dapat memberikan pengalaman pengguna akhir yang lebih baik daripada menghentikan aplikasi dengan menyebarkan file offline aplikasi.
Saat aplikasi ASP.NET Core berjalan di Windows, biner dikunci sehingga tidak dapat dimodifikasi atau diganti. Penyalinan bayangan memungkinkan rakitan aplikasi diperbarui saat aplikasi berjalan dengan membuat salinan rakitan.
Salinan bayangan tidak dimaksudkan untuk mengaktifkan penyebaran waktu henti nol, sehingga diharapkan IIS masih akan mendaur ulang aplikasi, dan beberapa permintaan mungkin mendapatkan respons 503 Layanan Tidak Tersedia . Sebaiknya gunakan pola seperti penyebaran biru-hijau atau slot penyebaran Azure untuk penyebaran waktu henti nol. Salinan bayangan membantu meminimalkan waktu henti pada penyebaran, tetapi tidak dapat sepenuhnya menghilangkannya.
Penyalinan bayangan diaktifkan dengan menyesuaikan pengaturan handler ANCM di web.config
:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<remove name="aspNetCore"/>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified"/>
</handlers>
<aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".logsstdout">
<handlerSettings>
<handlerSetting name="enableShadowCopy" value="true" />
<!-- Ensure that the IIS ApplicationPool identity has permission to this directory -->
<handlerSetting name="shadowCopyDirectory" value="../ShadowCopyDirectory/" />
</handlerSettings>
</aspNetCore>
</system.webServer>
</configuration>
ASP.NET Core