Compartir a través de


IHttpContextAccessor / HttpContext en aplicaciones de ASP.NET Core Blazor

Nota

Esta no es la versión más reciente de este artículo. Para la versión actual, consulte la versión .NET 9 de este artículo.

Importante

Esta información se relaciona con un producto de versión preliminar que puede modificarse sustancialmente antes de su publicación comercial. Microsoft no ofrece ninguna garantía, expresa o implícita, con respecto a la información proporcionada aquí.

Para la versión actual, consulte la versión .NET 9 de este artículo.

IHttpContextAccessor generalmente debe evitarse con la representación interactiva porque no siempre hay disponible una HttpContext válida.

IHttpContextAccessor se pueden usar para componentes que se representan estáticamente en el servidor. Sin embargo, se recomienda evitarlo si es posible.

HttpContext se puede usar como parámetro en cascada de solo en componentes raíz representados de manera estática para tareas generales, como inspeccionar y modificar encabezados u otras propiedades en el componente App (Components/App.razor). El valor siempre es null para la representación interactiva.

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

Durante la representación interactiva, es posible que una instancia de HttpContext no exista. En escenarios donde el HttpContext es necesario en componentes interactivos, recomendamos transferir datos de contexto con el estado persistente del componente desde el servidor.

Para obtener contexto adicional en casos perimetrales avanzados de†, consulte la explicación en los artículos siguientes:

La mayoría de los desarrolladores que crean y mantienen aplicaciones Blazor no necesitan adentrarse en conceptos avanzados siempre que se siga la orientación general de este artículo.

No use IHttpContextAccessor/HttpContext directa o indirectamente en los componentes de Razor de las aplicaciones de Blazor del lado servidor. Las aplicaciones Blazor se ejecutan fuera del contexto de canalización de ASP.NET Core. No se garantiza que el HttpContext esté disponible en la IHttpContextAccessory no se garantiza que HttpContext contenga el contexto que inició la aplicación de Blazor.

El enfoque recomendado para pasar el estado de solicitud a la aplicación Blazor es a través de parámetros de componente raíz durante la representación inicial de la aplicación. Como alternativa, la aplicación puede copiar los datos en un servicio delimitado durante el evento de ciclo de vida de inicialización del componente raíz para su uso a lo largo de toda la aplicación. Para obtener más información, consulte ASP.NET Core server-side y Blazor Web App escenarios de seguridad adicionales.

Un aspecto crítico de la seguridad Blazor del lado del servidor es que el usuario que está asociado con un circuito determinado podría ser actualizado en algún momento después de establecer el circuito Blazor, pero el IHttpContextAccessorno se actualiza. Para obtener más información sobre cómo abordar esta situación con servicios personalizados, consulte ASP.NET Core server-side y Blazor Web App escenarios de seguridad adicionales.

Para obtener instrucciones sobre IHttpContextAccessor y HttpContext en ASP.NET Core SignalR, consulte IHttpContextAccessor/HttpContext en ASP.NET Core SignalR.