Dela via


IHttpContextAccessor / HttpContext i ASP.NET Core SignalR

Anteckning

Det här är inte den senaste versionen av den här artikeln. För den aktuella utgåvan, se .NET 9-versionen av den här artikeln .

Viktig

Den här informationen gäller en förhandsversionsprodukt som kan ändras avsevärt innan den släpps kommersiellt. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, med avseende på den information som tillhandahålls här.

För den aktuella versionen, se .NET 9-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.