Použití ASP.NET Core s HTTP/2 ve službě IIS

Od Justin Kotalik

Protokol HTTP/2 je podporován ASP.NET Core 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í TLS 1.2 nebo novější
  • Při hostování mimo proces:Připojení k veřejnému hraničnímu serveru používají protokol HTTP/2, ale připojení reverzního proxy serveru k serveru Kestrel používá protokol HTTP/1.1.

Při nasazování v procesu při natazování připojení HTTP/2 nástroj HttpRequest.Protocol hlásí HTTP/2 . V případě nasazení mimo proces při natazování připojení HTTP/2 nástroj HttpRequest.Protocol hlásí HTTP/1.1 .

Další informace o modelech hostování v procesu a mimo proces najdete v tématu Modul ASP.NET Core .

Protokol HTTP/2 je ve výchozím nastavení povolený pro připojení HTTPS/TLS. Připojení se vrátí k http/1.1, pokud není vytvořeno připojení HTTP/2. Další informace o konfiguraci HTTP/2 s nasazeními 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 reakční části a odesílání snímků resetování.

Požadavky na spuštění gRPC ve službě IIS:

  • Hostování v procesu.
  • Windows 10, build operačního systému 20300.1000 nebo novější. Může vyžadovat použití Windows Insider.
  • Připojení TLS 1.2 nebo novější

Přívěsy

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.