Je construis un site en utilisant MVC4. Je ne pouvais même pas commencer parce que j'avais une erreur étrange. Ceci est mon code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
namespace MyProject
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
}
Le message d'erreur: Le type ou le nom de l'assembly 'HttpConfiguration' n'existe pas dans l'espace de noms 'System.Web.Http' (il vous manque une directive using ou une référence Assembly?)
Il ne reconnaît pas non plus le champ RouteParameter en lecture seule. Il me semble que cela peut avoir quelque chose à voir avec la version, ma DLL System.Web est la version 4.0.0.0.
Une autre information supplémentaire est que lorsque je tape "à l'aide de System.Web.", Intellisense reconnaît la dll .Http
CEPENDANT, dans le code, il ne reconnaît aucun de ses paramètres.
Je l'ai résolu. Le problème était que, lorsque j'ai créé le site, j'ai mis à jour tous les packages via Nuget. Cependant, comme je n’allais pas utiliser Entity Framework, je l’ai désinstallé. Pour pouvoir désinstaller ce paquet, il m'a fallu désinstaller Microsoft.AspNet.Providers.Core 1.2 également ... et je l'ai fait.
Ce paquet manquant a tout gâché. J'ai effacé le projet et tout recommencé. J'aurais aussi pu utiliser la commande Update-Package dans la console PM et avoir restauré tous les packages perdus. Cependant, comme j'avais tellement gâché par rapport au petit travail (presque nul) que j'avais fait, j'ai décidé de tout recommencer.
Merci quand même!
J'ai rencontré cette erreur lors du clonage d'une application MVC 4.0 qui fonctionnait auparavant pour moi. Mon problème était que le paquet Microsoft.Net.Http
NuGet ne restaurait pas correctement. Je l'ai résolu depuis la console NuGet:
Update-Package -reinstall Microsoft.Net.Http
Pour les autres personnes confrontées à ce problème, ma solution était différente. Premièrement, je rétrogradais un projet de .net 4.5 à .net 4.0, mais les symptômes étaient les mêmes que ci-dessus:
Le type ou le nom de l'assembly 'HttpConfiguration' n'existe pas dans l'espace de noms 'System.Web.Http' (il vous manque une directive using ou une référence Assembly?)
Je suis tombé par hasard sur un article de blog expliquant qu'il existe un lien entre Newtonsoft.Json
et HttpConfiguration
, j'ai supprimé la référence à Newtonsoft.Json
du projet et le fichier packages.config
, puis réinstallé Newtonsoft.Json
dans la console du gestionnaire de packages:
Install-Package Newtonsoft.Json
Je n'ai pas pu désinstaller Newtonsoft.Json
de la console de gestion des packages en raison d'autres dépendances, d'où la nécessité de supprimer manuellement la référence.
Voici le lien vers l'article: Newtonsoft.Json Hidden Dependencny on HttpConfiguration Breaks Compilation
1. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le nœud du projet, puis cliquez sur Ajouter une référence.
2.Dans la boîte de dialogue Ajouter une référence, sélectionnez l'onglet Assemblies. Et tapez «system.web.http» dans la case de recherche dans le coin supérieur droit.
3.Sélectionnez les composants que vous souhaitez référencer, s'il est déjà sélectionné que supprimez d'abord la référence que ** à nouveau Ajouter une référence.
Reconstruisez le projet à nouveau. S'il vous plaît laissez-moi savoir si cela fonctionne. Je vous remercie.
Assurez-vous de compiler pour Framework 4.5 et non 4.0. Cela a résolu le problème pour moi
lorsque vous avez mis à jour et réinstallé tous les packages AspNet de Nuget, il semble qu'il n'y ait pas eu de solution appropriée - le redémarrage de Visual Studio m'a sauvé.
Nous avons commencé à rencontrer ce problème sur l’un de nos projets depuis la semaine dernière. Le projet se déroulait bien il y a deux semaines et soudainement, cette exception a été rejetée. Aucune modification n'a été apportée dans les packages de pépites pour ce projet. Même extraire une version plus ancienne de SVN n’a pas abouti à une construction réussie.
En désespoir de cause, nous avons mis à niveau la solution de VS2012 à VS2013 et voilà, elle a été construite! Nous pensons, mais n'avons pas pu confirmer, qu'une mise à jour des outils effectuée dans Visual Studio 2013 avait affecté cette bibliothèque dans Visual Studio 2012.
Cela peut ne pas fonctionner pour tout le monde, mais il existe une option pour mettre à niveau la solution, cela semble résoudre le problème.
Encore un autre scénario. Je reconnais que cela n’est que vaguement lié à la question car je suis une API Web. Cependant ma recherche m'a conduit ici alors ...
J'avais un projet existant dans la solution qui ciblait Framework 4.5.2.
Lorsque j'ai ajouté un nouveau projet, il est entré en tant que 4,5, car je ne faisais pas assez attention. HttpConfiguration dûment disparu de la méthode de registre API Web.
Le fait de changer la cible en 4.5.2 a résolu le problème HttpConfiguration. Notez que cela a également causé d'autres problèmes avec RouteParameter: maintenant, j'avais deux définitions, l'une dans System.Web.Http et l'autre dans System.Web.UI.WebControls. Assez facile je suppose.
Mon sentiment est qu'il y a plus que cela ...