Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Hinweis
Dies ist nicht die neueste Version dieses Artikels. Die aktuelle Version finden Sie in der .NET 10-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.
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
SupportsTrailerssicher, dass Nachspanne für die Antwort unterstützt werden. - fügt
DeclareTrailerdem AntwortheaderTrailerden angegebenen Namen für den Nachspann hinzu. Das Deklarieren des Nachspanns einer Antwort ist optional, wird jedoch empfohlen. WennDeclareTraileraufgerufen wird, muss der Nachspann deklariert werden, bevor Antwortheader gesendet werden. - fügt
AppendTrailerden 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.
ASP.NET Core