Použití ASP.NET Core s HTTP/2 ve službě IIS
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.
Autor: Justin Kotalik
ASP.NET Core podporuje HTTP/2 v následujících scénářích nasazení služby IIS:
- Windows Server 2016 nebo novější / Windows 10 nebo novější
- IIS 10 nebo novější
- Připojení přes protokol TLS 1.2 nebo novější
- Při hostování out-of-process: Připojení k veřejnému hraničnímu serveru používají http/2, ale reverzní proxy připojení k Kestrel serveru používá HTTP/1.1.
V případě vnitroprocesového nasazení vlastnost HttpRequest.Protocol
po navázání připojení HTTP/2 bude obsahovat hodnotu HTTP/2
. V případě mimoprocesového nasazení vlastnost HttpRequest.Protocol
po navázání připojení HTTP/2 bude obsahovat hodnotu HTTP/1.1
.
Další informace o modelech vnitroprocesového a mimoprocesového hostování najdete v tématu Modul ASP.NET Core (ANCM) pro službu IIS.
Protokol HTTP/2 je ve výchozím nastavení povolený pro připojení HTTPS/TLS. Pokud není možné navázat připojení HTTP/2, naváže se připojení HTTP/1.1. Další informace o konfiguraci HTTP/2 v nasazeních služby IIS najdete v tématu HTTP/2 ve službě IIS.
Pokročilé funkce HTTP/2 pro podporu gRPC
Další funkce HTTP/2 ve službě IIS podporují gRPC, včetně podpory pro přívěsy odpovědí a odesílání resetování rámců.
Požadavky na spuštění gRPC ve službě IIS:
- Hostování v procesu
- Windows 11 Build 22000 nebo novější, Windows Server 2022 Build 20348 nebo novější.
- Připojení TLS 1.2 nebo novější
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.