Dans mon contrôleur ASP.NET MVC, j'ai une méthode qui requiert un nom d'utilisateur et un mot de passe. HttpRequest
objet. Tout ce à quoi j'ai accès est un HttpRequestBase
objet.
Y a-t-il un moyen de convertir cela ?
Que puis-je/doit-on faire ?
Dans mon contrôleur ASP.NET MVC, j'ai une méthode qui requiert un nom d'utilisateur et un mot de passe. HttpRequest
objet. Tout ce à quoi j'ai accès est un HttpRequestBase
objet.
Y a-t-il un moyen de convertir cela ?
Que puis-je/doit-on faire ?
Vous devriez toujours utiliser HttpRequestBase et HttpResponseBase dans votre application, par opposition aux versions concrètes qui sont impossibles à tester (sans typemock ou autre magie).
Il suffit d'utiliser le HttpRequestWrapper à convertir comme indiqué ci-dessous.
var httpRequestBase = new HttpRequestWrapper(Context.Request);
C'est votre méthode, donc vous pouvez la réécrire pour prendre HttpRequestBase
? Si ce n'est pas le cas, vous pouvez toujours obtenir le HttpRequest
de HttpContext.Current.HttpRequest
à transmettre. Cependant, j'enveloppe souvent l'accès au HttpContext à l'intérieur d'une classe comme celle mentionnée dans l'exemple suivant ASP.NET : Suppression des dépendances System.Web pour une meilleure prise en charge des tests unitaires.
C'est embarrassant, j'ai aussi pensé à ça et ça ne marche pas. Le HttpContext est le contexte MVC ... donc il n'y a pas de propriété 'Current' exposée sur lui. Je ne sais pas comment accéder à la 'vieille école' HttpContext.Current ... ? ???
Pour être sûr que vous saisissez la classe HttpContext au lieu du membre du contrôleur, essayez d'utiliser System.Web.HttpContext.Current.
J'avais besoin d'utiliser l'espace de noms complet parce qu'il prenait la propriété actuelle de l'espace de noms MVC. merci. Note aux autres : ne faites pas ce que je fais. C'est un VeryBadThing(tm).
Vous pouvez simplement utiliser
System.Web.HttpContext.Current.Request
La clé ici est que vous avez besoin de l'espace de nom complet pour obtenir le "bon" HttpContext.
Je sais que cela fait 4 ans que cette question a été posée, mais si cela peut aider quelqu'un, alors voilà !
(Edit : Je vois que Kevin Hakanson a déjà donné cette réponse...donc j'espère que ma réponse aidera les personnes qui ne lisent que les réponses et non les commentaires). :)
En général, lorsque vous avez besoin d'accéder au HttpContext
dans une action de contrôleur, il y a quelque chose que vous pouvez faire mieux au niveau de la conception.
Par exemple, si vous devez accéder à l'utilisateur actuel, donnez à votre méthode d'action un paramètre de type IPrincipal
que vous remplissez avec un Attribute
et de simuler comme vous le souhaitez lors des tests. Pour un petit exemple, voir cet article de blog et notamment le point 7.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
5 votes
Note : Le "contraire" de cette question se trouve ici. stackoverflow.com/questions/15275370/