Menggunakan ASP.NET Core dengan HTTP/2 di 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.
Oleh Justin Kotalik
HTTP/2 didukung dengan ASP.NET Core dalam skenario penyebaran IIS berikut:
- Windows Server 2016 atau yang lebih baru / Windows 10 atau yang lebih baru
- IIS 10 atau yang lebih baru
- TLS 1.2 atau koneksi yang lebih baru
- Saat menghosting di luar proses: Koneksi server tepi yang menghadap publik menggunakan HTTP/2, tetapi koneksi proksi terbalik ke Kestrel server menggunakan HTTP/1.1.
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 untuk koneksi HTTPS/TLS. 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.
Fitur HTTP/2 tingkat lanjut untuk mendukung gRPC
Fitur HTTP/2 tambahan di IIS mendukung gRPC, termasuk dukungan untuk trailer respons dan mengirim bingkai reset.
Persyaratan untuk menjalankan gRPC di IIS:
- Hosting dalam proses.
- Windows 11 Build 22000 atau yang lebih baru, Windows Server 2022 Build 20348 atau yang lebih baru.
- Koneksi TLS 1.2 atau yang lebih baru.
Trailer
Http Trailer mirip dengan Header HTTP, kecuali dikirim setelah isi respons dikirim. Untuk IIS dan HTTP.sys, hanya trailer respons HTTP/2 yang didukung.
if (httpContext.Response.SupportsTrailers())
{
httpContext.Response.DeclareTrailer("trailername");
// Write body
httpContext.Response.WriteAsync("Hello world");
httpContext.Response.AppendTrailer("trailername", "TrailerValue");
}
Dalam kode contoh sebelumnya:
SupportsTrailers
memastikan bahwa trailer didukung untuk respons.DeclareTrailer
menambahkan nama trailer yang diberikan keTrailer
header respons. Mendeklarasikan trailer respons bersifat opsional, tetapi disarankan. JikaDeclareTrailer
dipanggil, harus sebelum header respons dikirim.AppendTrailer
menambahkan trailer.
Reset
Reset memungkinkan server untuk mengatur ulang permintaan HTTP/2 dengan kode kesalahan tertentu. Permintaan reset dianggap dibatalkan.
var resetFeature = httpContext.Features.Get<IHttpResetFeature>();
resetFeature.Reset(errorCode: 2);
Reset
dalam contoh kode sebelumnya menentukan INTERNAL_ERROR
kode kesalahan. Untuk informasi selengkapnya tentang kode kesalahan HTTP/2, kunjungi bagian kode kesalahan spesifikasi HTTP/2.
ASP.NET Core