Sdílet prostřednictvím


IHttpContextAccessor / HttpContext v ASP.NET Core SignalR

Poznámka

Toto není nejnovější verze tohoto článku. Aktuální verzi najdete ve verzi .NET 10 tohoto článku.

IHttpContextAccessor / HttpContext byste se měli obecně vyhnout s SignalR, protože platný HttpContext není vždy dostupný. Ve většině případů kontext neexistuje (null).

I když je instance HttpContext k dispozici, závisí kontext na přenosu:

  • WebSockets obdrží jediný kontext jako výsledek počátečního potřesení rukou.
  • Dlouhé dotazování obdrží nový kontext pro každý požadavek klienta na „poll“.
  • Služba SignalR obdrží kontext, který je napodobený, falešný nebo simulovaný.

Při práci v centru SignalR můžete k HttpContext přistupovat přímo pomocí metody GetHttpContextExtensions.GetHttpContext. Tato metoda vrátí HttpContext pro aktuální připojení nebo null, pokud připojení není přidružené k požadavku HTTP. To je užitečné zejména při načítání informací o připojení HTTP, jako jsou hlavičky a řetězce dotazů přímo v centru. Tuto metodu doporučujeme volat přes IHttpContextAccessor pro přístup k HttpContext v centru. Další informace najdete v tématu Použití center v ASP.NET Core SignalR.

Pokyny k IHttpContextAccessor/HttpContext v aplikacích ASP.NET Core Blazor najdete v tématu IHttpContextAccessor/HttpContext v aplikacích ASP.NET Core Blazor.