Impossible d'accéder à HttpContext.Actuel
Je ne peux pas accéder à HttpContext.Courant sur mon projet MVC4 avec C # 4.5
J'ai ajouté ma référence au Système.Web dans mon projet et ajouté l'instruction using sur ma page de contrôleur...
Mais je ne peux accéder qu'à currentHandler...
var context = HttpContext.CurrentHandler; //Current
Est HttpContext.Current
obsolète sur C#4.5 ?
J'ai regardé cette page d'aide : http://msdn.microsoft.com/en-us/library/system.web.httpcontext.aspx
3 réponses
Avez-vous inclus l'assemblage System.Web
dans l'application?
using System.Web;
Si ce n'est pas le cas, essayez de spécifier l'espace de noms System.Web
, par exemple:
System.Web.HttpContext.Current
C'est parce que vous faites référence à la propriété du contrôleur nommée HttpContext
. Pour accéder au contexte actuel, utilisez le nom complet de la classe:
System.Web.HttpContext.Current
Cependant, il est fortement déconseillé d'accéder au contexte comme celui-ci dans ASP.NET MVC, donc oui, vous pouvez penser à System.Web.HttpContext.Current
comme étant obsolète à l'intérieur ASP.NET MVC. La manière correcte d'accéder au contexte actuel est
this.ControllerContext.HttpContext
Ajouter un peu pour atténuer la confusion ici. Même si la réponse (acceptée) de Darren Davies est plus simple, je pense que la réponse D'Andrei est une meilleure approche pour les applications MVC.
La réponse D'Andrei signifie que vous pouvez utiliser HttpContext
comme vous utiliseriez System.Web.HttpContext.Current
. Par exemple, si vous voulez faire ceci:
System.Web.HttpContext.Current.User.Identity.Name
, Vous devriez plutôt faire ceci:
HttpContext.User.Identity.Name
Les deux atteignent le même résultat, mais (encore une fois) en termes de MVC , ce dernier est plus recommandé.
Une autre bonne et aussi simple information à ce sujet peut être trouvée ici: différence entre HttpContext.Courant et contrôleur.Contexte dans MVC ASP.NET .