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 naleznete v rámci .NET verze 9 tohoto článku.

Důležitý

Tyto informace se týkají předběžného vydání produktu, který může být podstatně změněn před komerčním vydáním. Společnost Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, pokud jde o informace uvedené zde.

Aktuální verzi naleznete v verzi .NET 9 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.