IHttpContextAccessor / HttpContext i ASP.NET Core SignalR

Anteckning

Det här är inte den senaste versionen av den här artikeln. Den aktuella versionen finns i .NET 10-versionen av den här artikeln.

IHttpContextAccessor / HttpContext bör vanligtvis undvikas med SignalR eftersom en giltig HttpContext inte alltid är tillgänglig. I de flesta fall finns inte kontexten (null).

Även när en HttpContext instans är tillgänglig är kontexten beroende av transporten:

  • WebSockets tar emot endast en kontext som ett resultat av den första handskakningen.
  • Long polling får en ny kontext per klientförfrågan.
  • En SignalR-tjänst får en simulerad/förfalskad/shim-kontext.

När du arbetar i en SignalR hubb kan du komma åt HttpContext direkt med hjälp av metoden GetHttpContextExtensions.GetHttpContext. Den här metoden returnerar HttpContext för den aktuella anslutningen eller null om anslutningen inte är associerad med en HTTP-begäran. Detta är särskilt användbart för att hämta HTTP-anslutningsinformation, till exempel rubriker och frågesträngar, direkt i hubben. Vi rekommenderar att du anropar den här metoden via IHttpContextAccessor för åtkomst till HttpContext i hubben. Mer information finns i Använda hubbar i ASP.NET Core SignalR.

Mer information om IHttpContextAccessor/HttpContext i ASP.NET Core Blazor-appar finns i IHttpContextAccessor/HttpContext i ASP.NET Core Blazor-appar.