web-dev-qa-db-fra.com

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é les instructions d'utilisation sur la page de mon contrôleur ...

Mais je peux accéder à currentHandler uniquement ...

var context = HttpContext.CurrentHandler; //Current

Est HttpContext.Current obsolète en C # 4.5?

J'ai consulté cette page d'aide: http://msdn.Microsoft.com/en-us/library/system.web.httpcontext.aspx

58
Ema.H

Avez-vous inclus le System.Web Assemblage dans l'application?

using System.Web;

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

 System.Web.HttpContext.Current
122
Darren

En effet, 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 à un contexte comme celui-ci dans ASP.NET MVC. Donc, oui, vous pouvez penser à System.Web.HttpContext.Current comme obsolète dans ASP.NET MVC. La manière correcte d’accéder au contexte actuel est

this.ControllerContext.HttpContext

ou si vous êtes dans un contrôleur, utilisez simplement membre

this.HttpContext
33
Andrei

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 [~ # ~] mvc [~ # ~] applications.

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

Tous deux obtiennent le même résultat, mais (encore une fois) en termes de [~ # ~] mvc [~ # ~] , ce dernier est plus recommandé.

Vous trouverez une autre information utile et directe sur ce sujet ici: Différence entre HttpContext.Current et Controller.Context dans MVC ASP.NET .

3
Amir Syafrudin