Verwenden von ASP.NET Core mit HTTP/2 in IIS
Hinweis
Dies ist nicht die neueste Version dieses Artikels. Die aktuelle Version finden Sie in der .NET 9-Version dieses Artikels.
Warnung
Diese Version von ASP.NET Core wird nicht mehr unterstützt. Weitere Informationen finden Sie in der .NET- und .NET Core-Supportrichtlinie. Die aktuelle Version finden Sie in der .NET 9-Version dieses Artikels.
Wichtig
Diese Informationen beziehen sich auf ein Vorabversionsprodukt, das vor der kommerziellen Freigabe möglicherweise noch wesentlichen Änderungen unterliegt. Microsoft gibt keine Garantie, weder ausdrücklich noch impliziert, hinsichtlich der hier bereitgestellten Informationen.
Die aktuelle Version finden Sie in der .NET 9-Version dieses Artikels.
Von Justin Kotalik
HTTP/2 wird mit ASP.NET Core in den folgenden IIS-Bereitstellungsszenarien unterstützt:
- Windows Server 2016 oder höher/Windows 10 oder höher
- IIS 10 oder höher
- TLS 1.2-Verbindung oder höher
- Beim Out-of-Process-Hosting: Öffentlich zugängliche Edge-Server-Verbindungen verwenden HTTP/2, aber die Reverseproxyverbindung mit dem Kestrel-Server verwendet HTTP/1.1.
Für eine In-Process-Bereitstellung, wenn eine HTTP/2-Verbindung hergestellt wurde, meldet HttpRequest.Protocol
den Wert HTTP/2
. Für eine Out-of-Process-Bereitstellung, wenn eine HTTP/2-Verbindung hergestellt wurde, meldet HttpRequest.Protocol
den Wert HTTP/1.1
.
Weitere Informationen zu den In-Process- und Out-of-Process-Hostingmodellen finden Sie unter ASP.NET Core-Modul (ANCM) für IIS.
HTTP/2 ist standardmäßig für HTTPS-/TLS-Verbindungen aktiviert. Verbindungen führen ein Fallback auf HTTP/1.1 aus, wenn keine HTTP/2-Verbindung hergestellt wurde. Weitere Informationen zur HTTP/2-Konfiguration mit IIS-Bereitstellungen finden Sie unter HTTP/2 unter IIS.
Erweiterte HTTP/2-Features zur Unterstützung von gRPC
Zusätzliche HTTP/2-Features in IIS zur Unterstützung von gRPC, einschließlich der Unterstützung für Antwortnachspanne und das Senden von Frames zum Zurücksetzen
Anforderungen zum Ausführen von gRPC in IIS:
- In-Process-Hosting
- Windows 11 Build 22000 oder höher, Windows Server 2022 Build 20348 oder höher
- TLS 1.2-Verbindung oder höher
Trailer
HTTP-Nachspanne ähneln den HTTP-Headers, jedoch werden sie erst gesendet, nachdem der Antworttext gesendet wurde. Für IIS und HTTP.sys werden nur HTTP/2-Antwortnachspanne unterstützt.
if (httpContext.Response.SupportsTrailers())
{
httpContext.Response.DeclareTrailer("trailername");
// Write body
httpContext.Response.WriteAsync("Hello world");
httpContext.Response.AppendTrailer("trailername", "TrailerValue");
}
Im vorherigen Beispielcode:
- stellt
SupportsTrailers
sicher, dass Nachspanne für die Antwort unterstützt werden. - fügt
DeclareTrailer
dem AntwortheaderTrailer
den angegebenen Namen für den Nachspann hinzu. Das Deklarieren des Nachspanns einer Antwort ist optional, wird jedoch empfohlen. WennDeclareTrailer
aufgerufen wird, muss der Nachspann deklariert werden, bevor Antwortheader gesendet werden. - fügt
AppendTrailer
den Nachspann an.
Reset
Durch die Option „Zurücksetzen“ kann der Server eine HTTP/2-Anforderung mit einem angegebenen Fehlercode zurücksetzen. Eine Anforderung zum Zurücksetzen wird als abgebrochen betrachtet.
var resetFeature = httpContext.Features.Get<IHttpResetFeature>();
resetFeature.Reset(errorCode: 2);
Reset
gibt im vorangehenden Codebeispiel den Fehlercode INTERNAL_ERROR
an. Weitere Informationen zu HTTP/2-Fehlercodes finden Sie im Abschnitt HTTP/2-Spezifikationsfehlercode.