Použití ASP.NET Core s HTTP/2 ve službě IIS
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:
SupportsTrailerszajišťuje, že odpověď podporuje upoutávky.DeclareTrailerpřidá do hlavičky odpovědi danýTrailernázev hlavičky. Deklarování upoutávky odpovědi je volitelné, ale doporučuje se. PokudDeclareTrailerje volána, musí být před odesláním hlaviček odpovědi.AppendTrailerpř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.