Le type ou le nom d'espace de noms 'HttpGet' n'a pas pu être trouvé lors de l'ajout de 'Système.Web.Http' espace de noms
J'ai un problème dans MVC .
Je travaille actuellement dans MVC et la version est MVC4 . Et j'ai 2 ActionResult Méthode, voir ci-dessous
[HttpGet]
public ActionResult About()
{
ViewBag.Message = "Your app description page.";
return View();
}
[HttpPost]
public ActionResult About(ModelName ccc)
{
ViewBag.Message = "Your app description page.";
return View();
}
Nous avons besoin de la using System.Web.Mvc;
espace de noms pour [HttpPost] et [HttpGet] attributs. J'ai donc ajouté le using System.Web.Mvc;
espace de noms dans mon contrôleur . Mais j'ai besoin d'en ajouter un autre espace de Noms using System.Web.Http;
pour httpsresponseexpection la gestion des erreurs dans mon contrôleur .Si j'ai ajouté dans l'espace de noms . À ce moment System.Web.Mvc;
ne fonctionne pas .
J'ai eu cette erreur: le type ou Le nom d'espace de noms 'HttpGet' n'a pas pu être trouvé . Pourquoi ? rien de la relation entre le Système.Web.Mvc et du Système.Web.Http pour HttpGet ?
- Peut-être que votre problème est en quelque sorte lié à ceci: stackoverflow.com/questions/10939239/...
- D'accord ! Mais ils ont dll problème , Mais je n'ai pas de dll problème , tout fonctionne bien, Mais si j'ajoute le Système.Web.Espace de Noms Http puis HttpGet attribut n'a pas de travail !.
- S'il vous plaît une fois de plus voir ma question !!
Vous devez vous connecter pour publier un commentaire.
La raison pour laquelle vous faites cette exception est parce qu'il y a 2 différents
HttpGetAttribute
classes dans 2 différents espaces de noms:System.Web.Mvc.HttpGetAttribute
System.Web.Http.HttpGetAttribute
La première est utilisée dans ASP.NET contrôleurs MVC et le second est utilisé dans ASP.NET contrôleurs d'API Web.
Lorsque vous avez importé le deuxième espace de noms, le compilateur n'est plus en mesure de lever l'ambiguïté qui de 2 classes vous en parlez parce que le 2 espaces de noms sont dans la portée.
Fondamentalement Microsoft dupliqué toutes les classes qui existaient dans ASP.NET MVC pour le Web API, mais placés dans l'espace de noms différent. Fondamentalement, vous ne devriez pas mélanger les espaces de noms.
Pourquoi auriez-vous besoin de l'utiliser dans un ASP.NET MVC contrôleur? Normalement c'est quelque chose que vous devriez faire dans une Web API contrôleur.
Mais si pour une raison quelconque vous avez besoin de mélanger les 2, vous devrez spécifier explicitement l'attribut, vous devez utiliser pleinement les qualifiant de:
Pour l'enregistrement, j'ai eu un problème similaire dans une bibliothèque de classe avec une référence à la MVC. J'ai installé un package nuget dans la bibliothèque de classe que lui-même avait une dépendance sur MVC (note: les nouveaux package: RazorGenerator.Mvc). Auparavant, la bibliothèque de classe s'est appuyé sur une Sytem.Web.Mvc.dll référence ajoutée à l'aide de la "Ajouter une Référence" le dialogue plutôt que sur celui installé par l'intermédiaire de la "de Microsoft.AspNet.Mvc" package nuget.
Nuget choisi le plus bas MVC version qui pourrait répondre aux exigences de dépendance du nouveau paquet. Cela signifie que la référence précédente (à MVC 5) a été remplacé par une version plus ancienne de référence (à MVC 3).
La mise à niveau de la MVC version dans la bibliothèque de classe à l'aide de nuget résolu le problème.
Voici la solution pour ce problème de l'essayer....
J'ai rencontré ce problème sur OS X à l'aide .NET de Base. J'ai été absent une entrée pour
Microsoft.AspNetCore.Mvc
dans monproject.json
.Avant:
Après: