IIS'de HTTP/2 ile ASP.NET Core kullanma
Uyarı
ASP.NET Core'un bu sürümü artık desteklenmiyor. Daha fazla bilgi için bkz . .NET ve .NET Core Destek İlkesi. Geçerli sürüm için bu makalenin .NET 8 sürümüne bakın.
Tarafından Justin Kotalik
Aşağıdaki IIS dağıtım senaryolarında ASP.NET Core ile birlikte HTTP/2 desteklenir:
- Windows Server 2016 veya üzeri / Windows 10 veya üzeri
- IIS 10 veya üzeri
- TLS 1.2 veya üzeri bağlantısı
- İşlem dışı barındırılırken: Genel kullanıma yönelik uç sunucu bağlantıları HTTP/2 kullanır, ancak sunucuyaKestrel ters ara sunucu bağlantısı HTTP/1.1 kullanır.
HTTP/2 bağlantısı kurulduğunda işlem içi dağıtım için HttpRequest.Protocol
HTTP/2
bildirir. HTTP/2 bağlantısı kurulduğunda işlem dışı dağıtım için HttpRequest.Protocol
HTTP/1.1
bildirir.
İşlem içi ve işlem dışı barındırma modelleri hakkında daha fazla bilgi için bkz. IIS için ASP.NET Core Modülü (ANCM).
HTTP/2, HTTPS/TLS bağlantıları için varsayılan olarak etkindir. HTTP/2 bağlantısı kurulamazsa bağlantılar HTTP/1.1'e geri döner. IIS dağıtımlarıyla HTTP/2 yapılandırması hakkında daha fazla bilgi için bkz. IIS üzerinde HTTP/2.
gRPC'yi desteklemek için gelişmiş HTTP/2 özellikleri
IIS'deki ek HTTP/2 özellikleri, yanıt fragmanları ve sıfırlama çerçeveleri gönderme desteği de dahil olmak üzere gRPC'yi destekler.
IIS'de gRPC çalıştırma gereksinimleri:
- İşlem içi barındırma.
- Windows 11 Derleme 22000 veya üzeri, Windows Server 2022 Derleme 20348 veya üzeri.
- TLS 1.2 veya üzeri bağlantı.
Römork
HTTP Fragmanları HTTP Üst Bilgilerine benzer, ancak yanıt gövdesi gönderildikten sonra gönderilir. IIS ve HTTP.sys için yalnızca HTTP/2 yanıt fragmanları desteklenir.
if (httpContext.Response.SupportsTrailers())
{
httpContext.Response.DeclareTrailer("trailername");
// Write body
httpContext.Response.WriteAsync("Hello world");
httpContext.Response.AppendTrailer("trailername", "TrailerValue");
}
Yukarıdaki örnek kodda:
SupportsTrailers
, römorkların yanıt için desteklendiğini güvence altına alır.DeclareTrailer
verilen römork adını yanıt üst bilgisineTrailer
ekler. Yanıtın fragmanlarının bildirilmesi isteğe bağlıdır ancak önerilir. çağrılırsaDeclareTrailer
, yanıt üst bilgileri gönderilmeden önce olmalıdır.AppendTrailer
römorku ekler.
Reset
Sıfırlama, sunucunun belirtilen hata koduyla bir HTTP/2 isteğini sıfırlamasına olanak tanır. Sıfırlama isteğinin durduruldu olarak kabul edilir.
var resetFeature = httpContext.Features.Get<IHttpResetFeature>();
resetFeature.Reset(errorCode: 2);
Reset
yukarıdaki kod örneğinde hata kodunu belirtir INTERNAL_ERROR
. HTTP/2 hata kodları hakkında daha fazla bilgi için HTTP/2 belirtimi hata kodu bölümünü ziyaret edin.
ASP.NET Core