Použití ASP.NET Core s HTTP/2 ve službě IIS
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.
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro