Freigeben über


IHttpContextAccessor / HttpContext in ASP.NET Core SignalR

Anmerkung

Dies ist nicht die neueste Version dieses Artikels. Die aktuelle Version finden Sie in der .NET 9-Version dieses Artikels.

Wichtig

Diese Informationen beziehen sich auf ein Vorabversionsprodukt, das vor der kommerziellen Veröffentlichung erheblich geändert werden kann. Microsoft übernimmt keine Gewährleistungen, ausdrücklich oder konkludent in Bezug auf die hier bereitgestellten Informationen.

Die aktuelle Version finden Sie in der .NET 9-Version dieses Artikels.

IHttpContextAccessor / HttpContext sollten im Allgemeinen mit SignalR vermieden werden, da eine gültige HttpContext nicht immer verfügbar ist. In den meisten Fällen ist der Kontext nicht vorhanden (null).

Auch wenn eine HttpContext Instanz verfügbar ist, hängt der Kontext vom Transport ab:

  • WebSockets empfängt einen einzelnen Kontext als Ergebnis des ersten Handshakes.
  • Long Polling erhält für jede Client-Anfrage einen neuen Kontext.
  • Ein SignalR-Dienst empfängt einen simulierten/gefälschten/vorgetäuschten Kontext.

Wenn Sie innerhalb eines SignalR Hubs arbeiten, können Sie direkt mithilfe der GetHttpContextExtensions.GetHttpContext-Methode auf die HttpContext zugreifen. Diese Methode gibt die HttpContext für die aktuelle Verbindung oder null zurück, wenn die Verbindung keiner HTTP-Anforderung zugeordnet ist. Dies ist besonders hilfreich beim Abrufen von HTTP-Verbindungsinformationen, z. B. Headern und Abfragezeichenfolgen, direkt innerhalb des Hubs. Es wird empfohlen, diese Methode über IHttpContextAccessor für den Zugriff auf HttpContext im Hub aufzurufen. Weitere Informationen finden Sie unter Verwenden von Hubs in ASP.NET Core SignalR.

Anleitungen zu IHttpContextAccessor/HttpContext in ASP.NET Core Blazor-Apps finden Sie unter IHttpContextAccessor/HttpContext in ASP.NET Core Blazor Apps.