Megosztás a következőn keresztül:


Az ASP.NET Core használata HTTP/2-vel IIS-en

Megjegyzés:

Ez nem a cikk legújabb verziója. Az aktuális kiadásról a cikk .NET 10-es verziójában olvashat.

Figyelmeztetés

A ASP.NET Core ezen verziója már nem támogatott. További információt a .NET és a .NET Core támogatási szabályzatában talál. A jelen cikk .NET 9-es verzióját lásd az aktuális kiadásért .

Készítette : Justin Kotalik

A HTTP/2-t a ASP.NET Core támogatja az alábbi IIS-telepítési forgatókönyvekben:

  • Windows Server 2016 vagy újabb / Windows 10 vagy újabb
  • IIS 10 vagy újabb
  • TLS 1.2 vagy újabb kapcsolat
  • Folyamaton kívüli üzemeltetés esetén: A nyilvános peremhálózati kiszolgálókapcsolatok HTTP/2-t használnak, de a kiszolgáló fordított proxykapcsolata Kestrel HTTP/1.1-et használ.

HTTP/2-kapcsolat létesítésekor folyamatban lévő üzembe helyezés esetén a HttpRequest.Protocol jelentést tesz HTTP/2. Amikor egy HTTP/2-kapcsolat létrejön folyamaton kívüli üzembe helyezés során, HttpRequest.Protocol jelentést ad HTTP/1.1.

A folyamatban lévő és a folyamaton kívüli üzemeltetési modellekről az IIS-hez készült ASP.NET Core Module (ANCM) című témakörben talál további információt.

A HTTP/2 alapértelmezés szerint engedélyezve van HTTPS/TLS-kapcsolatok esetén. A kapcsolatok http/1.1-esre esnek vissza, ha nem jön létre HTTP/2 kapcsolat. Az IIS-alapú HTTP/2 konfigurációval kapcsolatos további információkért lásd: HTTP/2 az IIS-en.

Speciális HTTP/2-funkciók a gRPC támogatásához

Az IIS további HTTP/2 funkciói támogatják a gRPC-t, beleértve a végső fejléc támogatását és a visszaállítási keretek küldését.

A gRPC IIS-en való futtatásának követelményei:

  • Folyamatban lévő üzemeltetés.
  • Windows 11 Build 22000 vagy újabb, Windows Server 2022 Build 20348 vagy újabb.
  • TLS 1.2 vagy újabb kapcsolat.

Előzetesek

A HTTP utókiegészítések hasonlóak a HTTP-fejlécekhez, azzal a különbséggel, hogy a válasz törzsének elküldése után küldik őket. Az IIS és a HTTP.sysesetében csak a HTTP/2 válasz trailer-ek támogatottak.

if (httpContext.Response.SupportsTrailers())
{
    httpContext.Response.DeclareTrailer("trailername");	

    // Write body
    httpContext.Response.WriteAsync("Hello world");

    httpContext.Response.AppendTrailer("trailername", "TrailerValue");
}

Az előző példakódban:

  • SupportsTrailers biztosítja, hogy a előzetesek támogatottak legyenek a válasz folyamatában.
  • DeclareTrailer hozzáadja a megadott trailer nevet a Trailer válaszfejléchez. A válaszhoz tartozó utólagos adatok deklarálása nem kötelező, de ajánlott. Ha DeclareTrailer van meghívva, annak a válaszfejlécek elküldése előtt kell lennie.
  • AppendTrailer hozzáfűzi a pótkocsit.

Visszaállítás

Az alaphelyzetbe állítás lehetővé teszi, hogy a kiszolgáló visszaállítsa a HTTP/2 kérést egy megadott hibakóddal. Az alaphelyzetbe állítás kérését megszakítottnak tekintjük.

var resetFeature = httpContext.Features.Get<IHttpResetFeature>();
resetFeature.Reset(errorCode: 2);

Reset az előző kód példában a INTERNAL_ERROR hibakódot adja meg. A HTTP/2 hibakódokkal kapcsolatos további információkért tekintse meg a HTTP/2 specifikáció hibakódjánakszakaszát.