Hosting di luar proses dengan IIS dan ASP.NET Core
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.
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.
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.
Model hosting di luar proses
Untuk mengonfigurasi aplikasi untuk hosting di luar proses, atur nilai <AspNetCoreHostingModel>
properti ke OutOfProcess
dalam file proyek (.csproj
):
<PropertyGroup>
<AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
</PropertyGroup>
Hosting dalam proses diatur dengan InProcess
, yang merupakan nilai default.
Nilai <AspNetCoreHostingModel>
tidak peka huruf besar/kecil, jadi inprocess
dan outofprocess
merupakan nilai yang valid.
Kestrel server digunakan alih-alih Server HTTP IIS (IISHttpServer
).
Untuk di luar proses, CreateDefaultBuilder
panggilan UseIISIntegration ke:
- Konfigurasikan port dan jalur dasar yang harus didengarkan server saat berjalan di belakang Modul Inti ASP.NET.
- Konfigurasikan host untuk menangkap kesalahan startup.
Nama proses
Process.GetCurrentProcess().ProcessName
w3wp
iisexpress
/laporan (dalam proses) atau dotnet
(di luar proses).
Banyak modul asli, seperti Autentikasi Windows, tetap aktif. Untuk mempelajari selengkapnya tentang modul IIS yang aktif dengan modul ASP.NET Core, lihat Modul IIS dengan ASP.NET Core.
Modul ASP.NET Core juga dapat:
- Atur variabel lingkungan untuk proses pekerja.
- Log output stdout ke penyimpanan file untuk memecahkan masalah startup.
- Teruskan token autentikasi Windows.
ASP.NET Core