Použití protokolu HTTP/2 s webovým serverem ASP.NET Core Kestrel
Poznámka:
Toto není nejnovější verze tohoto článku. Aktuální verzi najdete ve verzi .NET 8 tohoto článku.
Upozorňující
Tato verze ASP.NET Core se už nepodporuje. Další informace najdete v tématu .NET a .NET Core Zásady podpory. Aktuální verzi najdete ve verzi .NET 8 tohoto článku.
Důležité
Tyto informace se týkají předběžného vydání produktu, který může být podstatně změněn před komerčním vydáním. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Aktuální verzi najdete ve verzi .NET 8 tohoto článku.
Http/2 je k dispozici pro aplikace ASP.NET Core, pokud jsou splněny 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ší (například Ubuntu 16.04 nebo novější)
- macOS 10.15 nebo novější
- Cílová architektura: .NET Core 2.2 nebo novější
- Připojení k vyjednávání protokolu aplikační vrstvy (ALPN)
- Připojení přes protokol TLS 1.2 nebo novější
–Kestrel má omezenou podporu protokolu HTTP/2 ve Windows Serveru 2012 R2 a Windows 8.1. Podpora je omezená, protože seznam podporovaných šifrovacích sad TLS dostupných v těchto operačních systémech je omezený. K zabezpečení připojení TLS může být potřeba certifikát vygenerovaný pomocí algoritmu ECDSA (Elliptic Curve Digital Signature Algorithm).
Pokud se naváže připojení HTTP/2, vlastnost HttpRequest.Protocol bude obsahovat hodnotu HTTP/2
.
Od verze .NET Core 3.0 je ve výchozím nastavení povolený protokol HTTP/2. Další informace o konfiguraci najdete v Kestrel částech omezení HTTP/2 a ListenOptions.Protocols .
Pokročilé funkce HTTP/2
Další funkce HTTP/2 v Kestrel podpoře gRPC, včetně podpory pro přívěsy odpovědí a odesílání resetování rámců.
Přívěsy
Přívěsy HTTP se podobají hlavičce HTTP, s výjimkou toho, že se odešlou po odeslání textu odpovědi. Pro službu IIS a HTTP.sys jsou podporovány pouze přívěsy 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 ukázkovém kódu:
SupportsTrailers
zajišťuje, aby byly pro odpověď podporovány přívěsy.DeclareTrailer
přidá daný název přívěsu do hlavičkyTrailer
odpovědi. Deklarování přívěsů odpovědí je volitelné, ale doporučuje se. PokudDeclareTrailer
je volána, musí být před odesláním hlaviček odpovědi.AppendTrailer
připojí přívěs.
Reset
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.
Http/2 je k dispozici pro aplikace ASP.NET Core, pokud jsou splněny 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ší (například Ubuntu 16.04 nebo novější)
- Cílová architektura: .NET Core 2.2 nebo novější
- Připojení k vyjednávání protokolu aplikační vrstvy (ALPN)
- Připojení přes protokol TLS 1.2 nebo novější
†HTTP/2 se v macOS bude podporovat v budoucí verzi. –Kestrel má omezenou podporu protokolu HTTP/2 ve Windows Serveru 2012 R2 a Windows 8.1. Podpora je omezená, protože seznam podporovaných šifrovacích sad TLS dostupných v těchto operačních systémech je omezený. K zabezpečení připojení TLS může být potřeba certifikát vygenerovaný pomocí algoritmu ECDSA (Elliptic Curve Digital Signature Algorithm).
Pokud se naváže připojení HTTP/2, vlastnost HttpRequest.Protocol bude obsahovat hodnotu HTTP/2
.
Od verze .NET Core 3.0 je ve výchozím nastavení povolený protokol HTTP/2. Další informace o konfiguraci najdete v Kestrel částech omezení HTTP/2 a ListenOptions.Protocols .
Pokročilé funkce HTTP/2
Další funkce HTTP/2 v Kestrel podpoře gRPC, včetně podpory pro přívěsy odpovědí a odesílání resetování rámců.
Přívěsy
Přívěsy HTTP se podobají hlavičce HTTP, s výjimkou toho, že se odešlou po odeslání textu odpovědi. Pro službu IIS a HTTP.sys jsou podporovány pouze přívěsy 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 ukázkovém kódu:
SupportsTrailers
zajišťuje, aby byly pro odpověď podporovány přívěsy.DeclareTrailer
přidá daný název přívěsu do hlavičkyTrailer
odpovědi. Deklarování přívěsů odpovědí je volitelné, ale doporučuje se. PokudDeclareTrailer
je volána, musí být před odesláním hlaviček odpovědi.AppendTrailer
připojí přívěs.
Reset
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.
Http/2 je k dispozici pro aplikace ASP.NET Core, pokud jsou splněny 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ší (například Ubuntu 16.04 nebo novější)
- Cílová architektura: .NET Core 2.2 nebo novější
- Připojení k vyjednávání protokolu aplikační vrstvy (ALPN)
- Připojení přes protokol TLS 1.2 nebo novější
†HTTP/2 se v macOS bude podporovat v budoucí verzi. –Kestrel má omezenou podporu protokolu HTTP/2 ve Windows Serveru 2012 R2 a Windows 8.1. Podpora je omezená, protože seznam podporovaných šifrovacích sad TLS dostupných v těchto operačních systémech je omezený. K zabezpečení připojení TLS může být potřeba certifikát vygenerovaný pomocí algoritmu ECDSA (Elliptic Curve Digital Signature Algorithm).
Pokud se naváže připojení HTTP/2, vlastnost HttpRequest.Protocol bude obsahovat hodnotu HTTP/2
.
Od verze .NET Core 3.0 je ve výchozím nastavení povolený protokol HTTP/2. Další informace o konfiguraci najdete v Kestrel částech omezení HTTP/2 a ListenOptions.Protocols .
Pokročilé funkce HTTP/2
Další funkce HTTP/2 v Kestrel podpoře gRPC, včetně podpory pro přívěsy odpovědí a odesílání resetování rámců.
Přívěsy
Přívěsy HTTP se podobají hlavičce HTTP, s výjimkou toho, že se odešlou po odeslání textu odpovědi. Pro službu IIS a HTTP.sys jsou podporovány pouze přívěsy 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 ukázkovém kódu:
SupportsTrailers
zajišťuje, aby byly pro odpověď podporovány přívěsy.DeclareTrailer
přidá daný název přívěsu do hlavičkyTrailer
odpovědi. Deklarování přívěsů odpovědí je volitelné, ale doporučuje se. PokudDeclareTrailer
je volána, musí být před odesláním hlaviček odpovědi.AppendTrailer
připojí přívěs.
Reset
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.