použití HTTP/2 s ASP.NET Core Kestrel webovým serverem

HTTP/2 je k dispozici pro ASP.NET Core aplikace, pokud jsou splněné následující základní požadavky:

  • Operační systém†
    • Windows Server 2016/Windows 10 nebo novější‡
    • Linux s OpenSSL 1.0.2 nebo novějším (například Ubuntu 16,04 nebo novější)
  • Cílová architektura: .NET Core 2,2 nebo novější
  • Připojení ALPN (Application-Layer Protocol Negotiation)
  • Připojení TLS 1,2 nebo novější

†HTTP/2 se v budoucí verzi podporuje v macOS. ‡Kestrelmá omezená podpora HTTP/2 v Windows Server 2012 R2 a Windows 8.1. Podpora je omezená, protože seznam podporovaných šifrovacích sad TLS, které jsou k dispozici v těchto operačních systémech, je omezený. Pro zabezpečení připojení TLS může být vyžadován certifikát vygenerovaný pomocí algoritmu ECDSA (s připojením typu eliptická křivka).

Pokud je vytvořeno připojení HTTP/2, sestavy HttpRequest. Protocol HTTP/2 .

Od .NET Core 3,0 je protokol HTTP/2 ve výchozím nastavení povolený. Další informace o konfiguraci najdete v částech Kestrel omezení http/2 a ListenOptions. Protocols .

Rozšířené funkce protokolu HTTP/2

Další funkce HTTP/2 v nástroji Kestrel podporují gRPC, včetně podpory pro přívěsy odpovědí a odesílání snímků pro resetování.

Karoseri

Hlavičky HTTP se podobají hlavičkám HTTP s tím rozdílem, že se odesílaly po odeslání textu odpovědi. Pro IIS a HTTP.sys se podporují pouze hlavičky s odpovědí HTTP/2.

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

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

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

V předchozím příkladu kódu:

  • SupportsTrailers zajišťuje, že odpověď podporuje upoutávky.
  • DeclareTrailer přidá do hlavičky odpovědi daný Trailer název hlavičky. Deklarování upoutávky odpovědi je volitelné, ale doporučuje se. Pokud DeclareTrailer je volána, musí být před odesláním hlaviček odpovědi.
  • AppendTrailer připojí upoutávku.

Resetovat

Resetování umožňuje serveru resetovat požadavek HTTP/2 se zadaným kódem chyby. Žádost o resetování se považuje za přerušenou.

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

Reset v předchozím příkladu kódu určuje INTERNAL_ERROR kód chyby. Další informace o kódech chyb HTTP/2 najdete v části kód chyby specifikace HTTP/2.