IIS ASP.NET Core HTTP/2 ile yükleme kullanma
Justin Kotalik tarafından
HTTP/2, aşağıdaki IIS ASP.NET Core senaryolarında aşağıdakilerle birlikte de kullanılabilir:
- Windows Server 2016 veya sonraki / Windows 10 veya sonraki bir
- IIS 10 veya sonraki bir
- TLS 1.2 veya sonraki bir bağlantı
- İşlem dışı barındırma sırasında:Genele yönelik uç sunucu bağlantıları HTTP/2 kullanır, Kestrel ancak sunucuya yönelik ters ara sunucu bağlantısı HTTP/1.1 kullanır.
Bir HTTP/2 bağlantısı kurularak işlem sırasında dağıtım için HttpRequest.Protocol raporları. HTTP/2 HTTP/2 bağlantısı kurulu olduğunda işlem dışında dağıtım için HttpRequest.Protocol raporları. HTTP/1.1
İşlem içinde ve işlem dışında barındırma modelleri hakkında daha fazla bilgi için bkz. ASP.NET Core Modülü .
HTTP/2, HTTPS/TLS bağlantıları için varsayılan olarak etkindir. Http/2 bağlantısı kurulmamışsa bağlantılar HTTP/1.1'e geri döner. IIS dağıtımları ile 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'nin ek HTTP/2 özellikleri yanıt tanıtımları ve sıfırlama çerçeveleri gönderme desteği de dahil olmak üzere gRPC'yi destekler.
IIS üzerinde gRPC çalıştırma gereksinimleri:
- İşlem içinde barındırma.
- Windows 10, işletim sistemi derlemesi 20300.1000 veya sonrası. bir Windows Insider derlemesi kullanımını gerekli olabilir.
- TLS 1.2 veya sonraki bir bağlantı
Römork
HTTP Trailer'lar HTTP Üst Bilgilerine benzer, ancak yanıt gövdesi gönderildikten sonra gönderilirler. IIS ve HTTP.sys, yalnızca HTTP/2 yanıt tanıtımları de destekler.
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, yanıt için tanıtımların desteklenesini sağlar.DeclareTrailerverilen tanıtım adını yanıt üstTrailerbilgisinde ekler. Yanıtın tanıtımları bildirilse de isteğe bağlıdır, ancak önerilir.DeclareTrailerçağrılırsa, yanıt üst bilgileri gönderilmeden önce olması gerekir.AppendTrailer, tanıtıma ekler.
Sıfırla
Sıfırlama, sunucunun belirtilen bir hata kodu ile HTTP/2 isteğini sıfırlamasına izin verir. Bir sıfırlama isteği durdurulan kabul edilir.
var resetFeature = httpContext.Features.Get<IHttpResetFeature>();
resetFeature.Reset(errorCode: 2);
Reset Yukarıdaki kod örneğinde INTERNAL_ERROR hata kodu belirtilir. HTTP/2 hata kodları hakkında daha fazla bilgi için http/2 belirtim hata kodu bölümünüziyaret edin.