ASP.NET Core Kestrel web sunucusuyla HTTP/2 kullanma

Not

Bu, bu makalenin en son sürümü değildir. Geçerli sürüm için bu makalenin .NET 8 sürümüne bakın.

Uyarı

ASP.NET Core'un bu sürümü artık desteklenmiyor. Daha fazla bilgi için bkz . .NET ve .NET Core Destek İlkesi. Geçerli sürüm için bu makalenin .NET 8 sürümüne bakın.

Önemli

Bu bilgiler, ticari olarak piyasaya sürülmeden önce önemli ölçüde değiştirilebilen bir yayın öncesi ürünle ilgilidir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.

Geçerli sürüm için bu makalenin .NET 8 sürümüne bakın.

Aşağıdaki temel gereksinimler karşılanırsa HTTP/2 , ASP.NET Core uygulamaları için kullanılabilir:

  • İşletim Sistemi
    • Windows Server 2016/Windows 10 veya üzeri‡
    • OpenSSL 1.0.2 veya üzeri yüklü Linux (örneğin, Ubuntu 16.04 veya üzeri)
    • macOS 10.15 veya üzeri
  • Hedef çerçeve: .NET Core 2.2 veya üzeri
  • Uygulama Katmanı Protokolü Anlaşması (ALPN) bağlantısı
  • TLS 1.2 veya üzeri bağlantısı

Kestrel‡ Windows Server 2012 R2 ve Windows 8.1'de HTTP/2 desteği sınırlıdır. Bu işletim sistemlerinde kullanılabilen desteklenen TLS şifreleme paketlerinin listesi sınırlı olduğundan destek sınırlıdır. TLS bağlantılarının güvenliğini sağlamak için Eliptik Eğri Dijital İmza Algoritması (ECDSA) kullanılarak oluşturulan bir sertifika gerekebilir.

HTTP/2 bağlantısı kuruluyorsa HttpRequest.Protocol HTTP/2 bildirir.

.NET Core 3.0'dan başlayarak HTTP/2 varsayılan olarak etkindir. Yapılandırma hakkında daha fazla bilgi için HTTP/2 sınırları ve ListenOptions.Protocols bölümlerine bakınKestrel.

Gelişmiş HTTP/2 özellikleri

yanıt fragmanları ve sıfırlama çerçeveleri gönderme desteği dahil olmak üzere gRPC'yi destekleyen ek HTTP/2 özellikleri Kestrel .

Römork

HTTP Fragmanları HTTP Üst Bilgilerine benzer, ancak yanıt gövdesi gönderildikten sonra gönderilir. IIS ve HTTP.sys için yalnızca HTTP/2 yanıt fragmanları desteklenir.

if (httpContext.Response.SupportsTrailers())
{
    httpContext.Response.DeclareTrailer("trailername");	

    // Write body
    httpContext.Response.WriteAsync("Hello world");

    httpContext.Response.AppendTrailer("trailername", "TrailerValue");
}

Yukarıdaki örnek kodda:

  • SupportsTrailers , römorkların yanıt için desteklendiğini güvence altına alır.
  • DeclareTrailer verilen römork adını yanıt üst bilgisine Trailer ekler. Yanıtın fragmanlarının bildirilmesi isteğe bağlıdır ancak önerilir. çağrılırsa DeclareTrailer , yanıt üst bilgileri gönderilmeden önce olmalıdır.
  • AppendTrailer römorku ekler.

Reset

Sıfırlama, sunucunun belirtilen hata koduyla bir HTTP/2 isteğini sıfırlamasına olanak tanır. Sıfırlama isteğinin durduruldu olarak kabul edilir.

var resetFeature = httpContext.Features.Get<IHttpResetFeature>();
resetFeature.Reset(errorCode: 2);

Reset yukarıdaki kod örneğinde hata kodunu belirtir INTERNAL_ERROR . HTTP/2 hata kodları hakkında daha fazla bilgi için HTTP/2 belirtimi hata kodu bölümünü ziyaret edin.

Aşağıdaki temel gereksinimler karşılanırsa HTTP/2 , ASP.NET Core uygulamaları için kullanılabilir:

  • İşletim sistemi†
    • Windows Server 2016/Windows 10 veya üzeri‡
    • OpenSSL 1.0.2 veya üzeri yüklü Linux (örneğin, Ubuntu 16.04 veya üzeri)
  • Hedef çerçeve: .NET Core 2.2 veya üzeri
  • Uygulama Katmanı Protokolü Anlaşması (ALPN) bağlantısı
  • TLS 1.2 veya üzeri bağlantısı

†HTTP/2, gelecekteki bir sürümde macOS'ta desteklenecektir. Kestrel‡ Windows Server 2012 R2 ve Windows 8.1'de HTTP/2 desteği sınırlıdır. Bu işletim sistemlerinde kullanılabilen desteklenen TLS şifreleme paketlerinin listesi sınırlı olduğundan destek sınırlıdır. TLS bağlantılarının güvenliğini sağlamak için Eliptik Eğri Dijital İmza Algoritması (ECDSA) kullanılarak oluşturulan bir sertifika gerekebilir.

HTTP/2 bağlantısı kuruluyorsa HttpRequest.Protocol HTTP/2 bildirir.

.NET Core 3.0'dan başlayarak HTTP/2 varsayılan olarak etkindir. Yapılandırma hakkında daha fazla bilgi için HTTP/2 sınırları ve ListenOptions.Protocols bölümlerine bakınKestrel.

Gelişmiş HTTP/2 özellikleri

yanıt fragmanları ve sıfırlama çerçeveleri gönderme desteği dahil olmak üzere gRPC'yi destekleyen ek HTTP/2 özellikleri Kestrel .

Römork

HTTP Fragmanları HTTP Üst Bilgilerine benzer, ancak yanıt gövdesi gönderildikten sonra gönderilir. IIS ve HTTP.sys için yalnızca HTTP/2 yanıt fragmanları desteklenir.

if (httpContext.Response.SupportsTrailers())
{
    httpContext.Response.DeclareTrailer("trailername");	

    // Write body
    httpContext.Response.WriteAsync("Hello world");

    httpContext.Response.AppendTrailer("trailername", "TrailerValue");
}

Yukarıdaki örnek kodda:

  • SupportsTrailers , römorkların yanıt için desteklendiğini güvence altına alır.
  • DeclareTrailer verilen römork adını yanıt üst bilgisine Trailer ekler. Yanıtın fragmanlarının bildirilmesi isteğe bağlıdır ancak önerilir. çağrılırsa DeclareTrailer , yanıt üst bilgileri gönderilmeden önce olmalıdır.
  • AppendTrailer römorku ekler.

Reset

Sıfırlama, sunucunun belirtilen hata koduyla bir HTTP/2 isteğini sıfırlamasına olanak tanır. Sıfırlama isteğinin durduruldu olarak kabul edilir.

var resetFeature = httpContext.Features.Get<IHttpResetFeature>();
resetFeature.Reset(errorCode: 2);

Reset yukarıdaki kod örneğinde hata kodunu belirtir INTERNAL_ERROR . HTTP/2 hata kodları hakkında daha fazla bilgi için HTTP/2 belirtimi hata kodu bölümünü ziyaret edin.

Aşağıdaki temel gereksinimler karşılanırsa HTTP/2 , ASP.NET Core uygulamaları için kullanılabilir:

  • İşletim sistemi†
    • Windows Server 2016/Windows 10 veya üzeri‡
    • OpenSSL 1.0.2 veya üzeri yüklü Linux (örneğin, Ubuntu 16.04 veya üzeri)
  • Hedef çerçeve: .NET Core 2.2 veya üzeri
  • Uygulama Katmanı Protokolü Anlaşması (ALPN) bağlantısı
  • TLS 1.2 veya üzeri bağlantısı

†HTTP/2, gelecekteki bir sürümde macOS'ta desteklenecektir. Kestrel‡ Windows Server 2012 R2 ve Windows 8.1'de HTTP/2 desteği sınırlıdır. Bu işletim sistemlerinde kullanılabilen desteklenen TLS şifreleme paketlerinin listesi sınırlı olduğundan destek sınırlıdır. TLS bağlantılarının güvenliğini sağlamak için Eliptik Eğri Dijital İmza Algoritması (ECDSA) kullanılarak oluşturulan bir sertifika gerekebilir.

HTTP/2 bağlantısı kuruluyorsa HttpRequest.Protocol HTTP/2 bildirir.

.NET Core 3.0'dan başlayarak HTTP/2 varsayılan olarak etkindir. Yapılandırma hakkında daha fazla bilgi için HTTP/2 sınırları ve ListenOptions.Protocols bölümlerine bakınKestrel.

Gelişmiş HTTP/2 özellikleri

yanıt fragmanları ve sıfırlama çerçeveleri gönderme desteği dahil olmak üzere gRPC'yi destekleyen ek HTTP/2 özellikleri Kestrel .

Römork

HTTP Fragmanları HTTP Üst Bilgilerine benzer, ancak yanıt gövdesi gönderildikten sonra gönderilir. IIS ve HTTP.sys için yalnızca HTTP/2 yanıt fragmanları desteklenir.

if (httpContext.Response.SupportsTrailers())
{
    httpContext.Response.DeclareTrailer("trailername");	

    // Write body
    httpContext.Response.WriteAsync("Hello world");

    httpContext.Response.AppendTrailer("trailername", "TrailerValue");
}

Yukarıdaki örnek kodda:

  • SupportsTrailers , römorkların yanıt için desteklendiğini güvence altına alır.
  • DeclareTrailer verilen römork adını yanıt üst bilgisine Trailer ekler. Yanıtın fragmanlarının bildirilmesi isteğe bağlıdır ancak önerilir. çağrılırsa DeclareTrailer , yanıt üst bilgileri gönderilmeden önce olmalıdır.
  • AppendTrailer römorku ekler.

Reset

Sıfırlama, sunucunun belirtilen hata koduyla bir HTTP/2 isteğini sıfırlamasına olanak tanır. Sıfırlama isteğinin durduruldu olarak kabul edilir.

var resetFeature = httpContext.Features.Get<IHttpResetFeature>();
resetFeature.Reset(errorCode: 2);

Reset yukarıdaki kod örneğinde hata kodunu belirtir INTERNAL_ERROR . HTTP/2 hata kodları hakkında daha fazla bilgi için HTTP/2 belirtimi hata kodu bölümünü ziyaret edin.