Condividi tramite


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:

† 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.