IHttpContextAccessor
/
HttpContext
nelle app ASP.NET Core Blazor
Nota
Questa non è la versione più recente di questo articolo. Per la versione corrente, vedere la versione .NET 9 di questo articolo.
Importante
Queste informazioni si riferiscono a un prodotto non definitive che può essere modificato in modo sostanziale prima che venga rilasciato commercialmente. Microsoft non fornisce alcuna garanzia, espressa o implicita, in relazione alle informazioni fornite qui.
Per la versione corrente, vedere la versione .NET 9 di questo articolo.
È generalmente meglio evitare IHttpContextAccessor con il rendering interattivo perché un HttpContext valido non è sempre disponibile.
IHttpContextAccessor può essere usato per i componenti di cui viene eseguito il rendering statico nel server. è tuttavia consigliabile evitarlo, se possibile.
HttpContext può essere usato come parametro a catena solo in componenti radice sottoposti a rendering statico per attività generali, ad esempio l'ispezione e la modifica di intestazioni o altre proprietà nel componente App
(Components/App.razor
). Il valore è sempre null
per il rendering interattivo.
[CascadingParameter]
public HttpContext? HttpContext { get; set; }
Durante il rendering interattivo, un'istanza di HttpContext potrebbe non esistere neanche. Per gli scenari in cui il HttpContext è necessario nei componenti interattivi, è consigliabile trasmettere i dati di contesto con lo stato persistente del componente dal server.
Per un contesto aggiuntivo nei casi limite avanzati e†, vedere la discussione negli articoli seguenti:
-
HttpContext è valido nella pagina Blazor rendering di Interactive Server (
dotnet/AspNetCore.Docs
#34301) -
Implicazioni per la sicurezza dell'uso di IHttpContextAccessor in Blazor Server (
dotnet/aspnetcore
#45699)
† Gli sviluppatori che creano e mantengono Blazor app non devono approfondire i concetti avanzati purché venga seguita la guida generale in questo articolo.
Non usare IHttpContextAccessor/HttpContext direttamente o indirettamente nei componenti Razor delle app Blazor lato server. Blazor le app vengono eseguite all'esterno del contesto della pipeline ASP.NET Core. Non è garantito che il HttpContext sia disponibile all'interno del IHttpContextAccessor, e non è garantito che il HttpContext contenga il contesto che ha avviato l'app Blazor.
L'approccio consigliato per passare lo stato della richiesta all'app Blazor consiste nell'usare i parametri del componente radice durante il rendering iniziale dell'app. In alternativa, l'app può copiare i dati in un servizio con ambito definito nell'evento del ciclo di vita di inizializzazione del componente radice per un uso più ampio nell'app. Per altre informazioni, vedere ASP.NET Core server-side e Blazor Web App altri scenari di sicurezza.
Un aspetto critico della sicurezza Blazor lato server è che l'utente collegato a un determinato circuito potrebbe essere aggiornato in un determinato momento dopo la creazione del circuito Blazor, ma il IHttpContextAccessornon viene aggiornato. Per altre informazioni sulla gestione di questa situazione con i servizi personalizzati, vedere ASP.NET Core server-side e Blazor Web App altri scenari di sicurezza.
Per indicazioni su IHttpContextAccessor e HttpContext in ASP.NET Core SignalR, vedere IHttpContextAccessor/HttpContext in ASP.NET Core SignalR.