Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Poznámka:
Toto není nejnovější verze tohoto článku. Aktuální verzi najdete ve verzi .NET 10 tohoto článku.
Upozorňující
Tato verze ASP.NET Core se už nepodporuje. Další informace najdete v zásadách podpory .NET a .NET Core. Aktuální verzi najdete v tomto článku ve verzi .NET 9.
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:
-
SupportsTrailerszajišťuje, aby byly pro odpověď podporovány přívěsy. -
DeclareTrailerpřidá daný název přívěsu do hlavičkyTrailerodpovědi. Deklarování přívěsů odpovědí je volitelné, ale doporučuje se. PokudDeclareTrailerje volána, musí být před odesláním hlaviček odpovědi. -
AppendTrailerpř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.