Impossible d’accéder à HttpContext.Current

Je ne peux pas accéder à HttpContext.Current sur mon projet MVC4 avec C # 4.5

J’ai ajouté ma référence à System.Web dans mon projet et ajouté l’instruction using sur ma page de contrôleur …

Mais je ne peux accéder à currentHandler que …

var context = HttpContext.CurrentHandler; //Current 

Est-ce que HttpContext.Current est obsolète sur C # 4.5?

J’ai regardé cette page d’aide: http://msdn.microsoft.com/en-us/library/system.web.httpcontext.aspx

Avez-vous inclus l’assemblage System.Web dans l’application?

 using System.Web; 

Sinon, essayez de spécifier l’espace de noms System.Web , par exemple:

  System.Web.HttpContext.Current 

Cela est dû au fait que vous faites référence à la propriété du contrôleur nommé 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 à un tel contexte dans ASP.NET MVC, alors oui, vous pouvez considérer System.Web.HttpContext.Current comme étant obsolète dans 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 de Darren Davies (acceptée) est plus simple, je pense que la réponse d’Andrei est une meilleure approche pour les applications MVC .

La réponse de 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 obtiennent le même résultat, mais (encore) en termes de MVC , ce dernier est plus recommandé.

Une autre information utile et directe sur ce sujet peut être trouvée ici: Différence entre HttpContext.Current et Controller.Context dans MVC ASP.NET .