Gunakan HTTP/2 dengan server web ASP.NET Core Kestrel

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 ke Trailer header respons. Mendeklarasikan trailer respons bersifat opsional, tetapi disarankan. Jika DeclareTrailer 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 ke Trailer header respons. Mendeklarasikan trailer respons bersifat opsional, tetapi disarankan. Jika DeclareTrailer 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 ke Trailer header respons. Mendeklarasikan trailer respons bersifat opsional, tetapi disarankan. Jika DeclareTrailer 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.