Recuperare il contesto http in una view ASP.NET Core

pubblicato da , il 23/09/2016 alle 0.00

Quando, in un progetto ASP.NET Core, implementiamo una view Razor potremmo necessitare del contesto http: sostanzialmente, ciò che in ASP.NET 4.x avremmo ottenuto accedendo alla proprietà statica Current della classe HttpContext mediante l'espressione HttpContext.Current.

Tale proprietà, però, in ASP.NET Core non è più esposta: come fare quindi? Possiamo risolvere il "problema" utilizzando una delle feature più interessanti fornite "out of the box" dal toolkit, ossia la dependency injection.

Poichè il contesto http implementa l'interfaccia IHttpContextAccessor, sarà suffiente registrare tale dipendenza nella view avvalendosi dello statement @inject come mostrato nel seguente snippet per poter dichiarare una istanza del contesto disponibile all'interno dell'intera view.

@using Microsoft.AspNetCore.Http
@inject IHttpContextAccessor HttpContextAccessor


<p>
    Hai richiesto un file di tipo: @HttpContextAccessor.HttpContext.Request.Headers["Accept"]
</p>