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čky Trailer odpovědi. Deklarování přívěsů odpovědí 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í 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.