Číst v angličtině

Sdílet prostřednictvím


IHttpContextAccessor / HttpContext v aplikacích ASP.NET Core Blazor

Poznámka

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

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

IHttpContextAccessor byste se obecně měli vyhnout interaktivnímu vykreslování, protože platný HttpContext není vždy dostupný.

IHttpContextAccessor lze použít pro součásti, které jsou staticky vykresleny na serveru. Pokud je to ale možné, doporučujeme se tomu vyhnout.

HttpContext lze použít jako kaskádový parametr pouze v staticky vykreslovaných kořenových komponentách pro obecné úlohy, jako je kontrola a úprava hlaviček nebo jiných vlastností v komponentě App (Components/App.razor). Hodnota je vždy null pro interaktivní vykreslování.

C#
[CascadingParameter]
public HttpContext? HttpContext { get; set; }

Během interaktivního vykreslování nemusí instance HttpContext ani existovat. V situacích, kdy je HttpContext vyžadován v interaktivních komponentách, doporučujeme předávat kontextová data z serveru s trvalým stavem komponenty .

Další kontext v pokročilých hraničních případech najdete v diskuzi v následujících článcích:†

Většina vývojářů, kteří vytvářejí a udržují Blazor aplikace, se nemusí zabývat pokročilými koncepty, pokud dodržují obecné pokyny v tomto článku.

Nepoužívejte IHttpContextAccessor/HttpContext přímo ani nepřímo v Razor komponentách Blazor aplikací na straně serveru. Blazor aplikace běží mimo kontext potrubí ASP.NET Core. Není jisté, že HttpContext bude dostupná v rámci IHttpContextAccessor, a také není jisté, že HttpContext bude obsahovat kontext, který spustil aplikaci Blazor.

Doporučený postup pro předání stavu požadavku do aplikace Blazor je prostřednictvím parametrů kořenové komponenty během počátečního vykreslování aplikace. Případně může aplikace zkopírovat data do vymezené služby v události životního cyklu inicializace kořenové komponenty pro použití v celé aplikaci. Pro více informací viz serverová část ASP.NET Core a Blazor Web App další scénáře zabezpečení.

Důležitým aspektem zabezpečení Blazor na straně serveru je to, že se uživatel připojený k danému okruhu může v určitém okamžiku po navázání Blazor okruhu aktualizovat, ale IHttpContextAccessorse neaktualizuje. Další informace o řešení této situace s vlastními službami najdete v případové studii ASP.NET Core na straně serveru a o dalších scénářích zabezpečení Blazor Web App.

Pokyny k IHttpContextAccessor a HttpContext v ASP.NET Core SignalRnajdete v tématu IHttpContextAccessor/HttpContext v ASP.NET Core SignalR.