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.
  • DeclareTrailer verilen tanıtım adını yanıt üst Trailer bilgisinde 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.