Delen via


IHttpContextAccessor / HttpContext in ASP.NET Core Blazor-toepassingen

Notitie

Dit is niet de nieuwste versie van dit artikel. Zie de .NET 9-versie van dit artikelvoor de huidige release.

Belangrijk

Deze informatie heeft betrekking op een pre-releaseproduct dat aanzienlijk kan worden gewijzigd voordat het commercieel wordt uitgebracht. Microsoft geeft geen garanties, uitdrukkelijk of impliciet, met betrekking tot de informatie die hier wordt verstrekt.

Zie de .NET 9-versie van dit artikelvoor de huidige release.

IHttpContextAccessor over het algemeen moet worden vermeden met interactieve rendering, omdat een geldige HttpContext niet altijd beschikbaar is.

IHttpContextAccessor kunnen worden gebruikt voor onderdelen die statisch worden weergegeven op de server. We raden u echter aan deze indien mogelijk te vermijden.

HttpContext kan worden gebruikt als een trapsgewijze parameter alleen in statisch gerenderde hoofdonderdelen voor algemene taken, zoals het inspecteren en wijzigen van headers of andere eigenschappen in het App onderdeel (Components/App.razor). De waarde wordt altijd null voor interactieve rendering.

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

Tijdens interactieve rendering bestaat een HttpContext exemplaar mogelijk niet eens. Voor scenario's waarin de HttpContext is vereist in interactieve onderdelen, raden we u aan contextgegevens te laten stromen met permanente componentstatus van de server.

Voor aanvullende context in geavanceerde edge cases†, zie de discussie in de volgende artikelen:

† De meeste ontwikkelaars die Blazor apps bouwen en onderhouden, hoeven zich niet te verdiepen in geavanceerde concepten zolang de algemene richtlijnen in dit artikel worden gevolgd.

Gebruik IHttpContextAccessor/HttpContext niet direct of indirect in de Razor onderdelen van Blazor-apps aan de serverzijde. Blazor apps worden uitgevoerd buiten de context van de ASP.NET Core-pijplijn. De HttpContext is niet gegarandeerd beschikbaar in de IHttpContextAccessor, en het is niet gegarandeerd dat HttpContext de context behoudt waarmee de Blazor-app is gestart.

De aanbevolen methode voor het doorgeven van de status van de aanvraag aan de Blazor-app is via de parameters van het hoofdonderdeel tijdens de eerste rendering van de app. De app kan de gegevens ook kopiëren in een scoped service tijdens de initialisatielevenscyclusgebeurtenis van het hoofdonderdeel voor gebruik in de gehele app. Zie ASP.NET Core-serverzijde en Blazor Web App aanvullende beveiligingsscenario'svoor meer informatie.

Een essentieel aspect van Blazor beveiliging aan de serverzijde is dat de gebruiker die aan een bepaald circuit is gekoppeld, op een bepaald moment kan worden bijgewerkt nadat het Blazor circuit tot stand is gebracht, maar de IHttpContextAccessorniet wordt bijgewerkt. Zie ASP.NET Core-serverzijde en Blazor Web App aanvullende beveiligingsscenario'svoor meer informatie over het aanpakken van deze situatie met aangepaste services.

Raadpleeg voor richtlijnen over IHttpContextAccessor en HttpContext in ASP.NET Core SignalRde sectie IHttpContextAccessor/HttpContext in ASP.NET Core SignalR.