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
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
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
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 .