Dela via


IHttpContextAccessor / HttpContext i ASP.NET Core Blazor-appar

Not

Det här är inte den senaste versionen av den här artikeln. För den aktuella versionen, 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.

Den aktuella utgåvan finns i den .NET 9-versionen av den här artikeln.

IHttpContextAccessor bör vanligtvis undvikas med interaktiv återgivning eftersom en giltig HttpContext inte alltid är tillgänglig.

IHttpContextAccessor kan användas för komponenter som återges statiskt på servern. Vi rekommenderar dock att du undviker det om det är möjligt.

HttpContext kan användas som en kaskadparameter endast i statiskt renderade rotkomponenter för allmänna uppgifter, till exempel att inspektera och ändra rubriker eller andra egenskaper i App-komponenten (Components/App.razor). Värdet är alltid null för interaktiv återgivning.

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

Under interaktiv återgivning kanske en HttpContext instans inte ens finns. För scenarier där HttpContext krävs i interaktiva komponenter rekommenderar vi att du överför kontextdata med från serverns beständiga komponenttillståndet.

För ytterligare kontext i avancerade specialfall†, se diskussionen i följande artiklar.

†De flesta utvecklare som bygger och underhåller Blazor-appar behöver inte fördjupa sig i avancerade koncept så länge de följer de allmänna riktlinjerna i denna artikel.

Använd inte IHttpContextAccessor/HttpContext direkt eller indirekt i de Razor komponenterna i Blazor appar på serversidan. Blazor appar körs utanför ASP.NET Core-pipelinekontexten. Det HttpContext är inte garanterat att vara tillgängligt i IHttpContextAccessor, och HttpContext är inte garanterat att innehålla den kontext som startade Blazor-appen.

Den rekommenderade metoden för att skicka begärandetillståndet till Blazor appen är genom rotkomponentparametrar under appens första renderingen. Alternativt kan appen kopiera data till en begränsad tjänst i rotkomponentens initieringslivscykelhändelse för användning i hela appen. Mer information finns i ASP.NET Core-serversidan och Blazor Web App ytterligare säkerhetsscenarier.

En viktig aspekt av Blazor säkerhet på serversidan är att användaren som är ansluten till en viss krets kan uppdateras någon gång efter att Blazor-kretsen har upprättats men IHttpContextAccessorinte uppdateras. Mer information om hur du hanterar den här situationen med anpassade tjänster finns i ASP.NET Core-serversidan och Blazor Web App ytterligare säkerhetsscenarier.

Mer information om IHttpContextAccessor och HttpContext i ASP.NET Core SignalRfinns i IHttpContextAccessor/HttpContext i ASP.NET Core SignalR.