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

49
demandé sur Ema.H 2013-08-19 12:16:44

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
108
répondu Darren 2013-08-19 08:19:50

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
25
répondu Andrei 2013-08-19 08:21:21

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 .

1
répondu Amir Syafrudin 2017-05-23 11:47:05