Web sunucusuyla HTTP/2 ASP.NET Core Kestrel kullanma

Http/2, aşağıdaki ASP.NET Core karşılarsa uygulama uygulamaları için kullanılabilir:

  • İşletim sistemi†
    • Windows Server 2016/Windows 10 veya sonraki bir‡
    • OpenSSL 1.0.2 veya sonraki sürümleriyle Linux (örneğin Ubuntu 16.04 veya sonraki bir sürümü)
  • Hedef çerçeve: .NET Core 2.2 veya sonraki bir
  • Uygulama Katmanı Protokol Anlaşması (KATMANıN) bağlantısı
  • TLS 1.2 veya sonraki bir bağlantı

†HTTP/2, gelecek bir sürümde macOS'ta desteklenecegizli olacak. ‡Kestrel, R2 ve Windows Server 2012 üzerinde HTTP/2 için sınırlı Windows 8.1. 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.

Bir HTTP/2 bağlantısı kurulursa, HttpRequest.Protocol HTTP/2 raporları.

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

Gelişmiş HTTP/2 özellikleri

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

Römork

HTTP Trailer'lar HTTP Üst Bilgilerine benzer, ancak yanıt gövdesi gönderildikten sonra gönderilirler. IIS ve HTTP.sys, yalnızca HTTP/2 yanıt tanıtımları de destekler.

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 , yanıt için tanıtımların desteklenesini sağlar.
  • DeclareTrailer verilen tanıtım adını yanıt üst Trailer bilgisinde ekler. Yanıtın tanıtımları bildirilse de isteğe bağlıdır, ancak önerilir. DeclareTrailerçağrılırsa, yanıt üst bilgileri gönderilmeden önce olması gerekir.
  • AppendTrailer , tanıtıma ekler.

Sıfırla

Sıfırlama, sunucunun belirtilen bir hata kodu ile HTTP/2 isteğini sıfırlamasına izin verir. Bir sıfırlama isteği durdurulan kabul edilir.

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

Reset Yukarıdaki kod örneğinde INTERNAL_ERROR hata kodu belirtilir. HTTP/2 hata kodları hakkında daha fazla bilgi için http/2 belirtim hata kodu bölümünüziyaret edin.