Gunakan HTTP/2 dengan server web ASP.NET Core Kestrel
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.
HTTP/2 tersedia untuk aplikasi ASP.NET Core jika persyaratan dasar berikut terpenuhi:
- Sistem operasi
- Windows Server 2016/Windows 10 atau yang lebih baru‡
- Linux dengan OpenSSL 1.0.2 atau yang lebih baru (misalnya, Ubuntu 16.04 atau yang lebih baru)
- macOS 10.15 atau yang lebih baru
- Kerangka kerja target: .NET Core 2.2 atau yang lebih baru
- Koneksi Negosiasi Protokol Lapisan Aplikasi (ALPN)
- TLS 1.2 atau koneksi yang lebih baru
Kestrel‡ memiliki dukungan terbatas untuk HTTP/2 di Windows Server 2012 R2 dan Windows 8.1. Dukungan terbatas karena daftar rangkaian cipher TLS yang didukung yang tersedia pada sistem operasi ini terbatas. Sertifikat yang dihasilkan menggunakan Elliptic Curve Digital Signature Algorithm (ECDSA) mungkin diperlukan untuk mengamankan koneksi TLS.
Jika koneksi HTTP/2 dibuat, HttpRequest.Protocol melaporkan HTTP/2
.
Dimulai dengan .NET Core 3.0, HTTP/2 diaktifkan secara default. Untuk informasi selengkapnya tentang konfigurasi, lihat bagian Kestrel Batas HTTP/2 dan ListenOptions.Protocols .
Fitur HTTP/2 tingkat lanjut
Fitur HTTP/2 tambahan dalam Kestrel mendukung gRPC, termasuk dukungan untuk trailer respons dan mengirim bingkai reset.
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.
HTTP/2 tersedia untuk aplikasi ASP.NET Core jika persyaratan dasar berikut terpenuhi:
- Sistem operasi†
- Windows Server 2016/Windows 10 atau yang lebih baru‡
- Linux dengan OpenSSL 1.0.2 atau yang lebih baru (misalnya, Ubuntu 16.04 atau yang lebih baru)
- Kerangka kerja target: .NET Core 2.2 atau yang lebih baru
- Koneksi Negosiasi Protokol Lapisan Aplikasi (ALPN)
- TLS 1.2 atau koneksi yang lebih baru
†HTTP/2 akan didukung di macOS dalam rilis mendatang. Kestrel‡ memiliki dukungan terbatas untuk HTTP/2 di Windows Server 2012 R2 dan Windows 8.1. Dukungan terbatas karena daftar rangkaian cipher TLS yang didukung yang tersedia pada sistem operasi ini terbatas. Sertifikat yang dihasilkan menggunakan Elliptic Curve Digital Signature Algorithm (ECDSA) mungkin diperlukan untuk mengamankan koneksi TLS.
Jika koneksi HTTP/2 dibuat, HttpRequest.Protocol melaporkan HTTP/2
.
Dimulai dengan .NET Core 3.0, HTTP/2 diaktifkan secara default. Untuk informasi selengkapnya tentang konfigurasi, lihat bagian Kestrel Batas HTTP/2 dan ListenOptions.Protocols .
Fitur HTTP/2 tingkat lanjut
Fitur HTTP/2 tambahan dalam Kestrel mendukung gRPC, termasuk dukungan untuk trailer respons dan mengirim bingkai reset.
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.
HTTP/2 tersedia untuk aplikasi ASP.NET Core jika persyaratan dasar berikut terpenuhi:
- Sistem operasi†
- Windows Server 2016/Windows 10 atau yang lebih baru‡
- Linux dengan OpenSSL 1.0.2 atau yang lebih baru (misalnya, Ubuntu 16.04 atau yang lebih baru)
- Kerangka kerja target: .NET Core 2.2 atau yang lebih baru
- Koneksi Negosiasi Protokol Lapisan Aplikasi (ALPN)
- TLS 1.2 atau koneksi yang lebih baru
†HTTP/2 akan didukung di macOS dalam rilis mendatang. Kestrel‡ memiliki dukungan terbatas untuk HTTP/2 di Windows Server 2012 R2 dan Windows 8.1. Dukungan terbatas karena daftar rangkaian cipher TLS yang didukung yang tersedia pada sistem operasi ini terbatas. Sertifikat yang dihasilkan menggunakan Elliptic Curve Digital Signature Algorithm (ECDSA) mungkin diperlukan untuk mengamankan koneksi TLS.
Jika koneksi HTTP/2 dibuat, HttpRequest.Protocol melaporkan HTTP/2
.
Dimulai dengan .NET Core 3.0, HTTP/2 diaktifkan secara default. Untuk informasi selengkapnya tentang konfigurasi, lihat bagian Kestrel Batas HTTP/2 dan ListenOptions.Protocols .
Fitur HTTP/2 tingkat lanjut
Fitur HTTP/2 tambahan dalam Kestrel mendukung gRPC, termasuk dukungan untuk trailer respons dan mengirim bingkai reset.
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