J'ai créé une application API Web MVC 4 à l'intérieur de ma solution, mais deux erreurs me manquent et j'ai besoin d'aide.
'System.Web.Http.HttpConfiguration' ne contient pas de définition pour 'MapHttpAttributeRoutes' et aucune méthode d'extension 'MapHttpAttributeRoutes' acceptant un premier argument de type 'System.Web.Http.HttpConfiguration' pourrait être trouvé (il vous manque une directive Using ou une référence Assembly?)
Cette erreur se produit sur le code suivant
Fichier: WebApiConfig.cs (dans le dossier App_Start)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
using System.Web;
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
Un autre, est dans le Global.asax
'System.Web.Http.GlobalConfiguration' ne contient pas de définition pour 'Configurer'
Fichier: Global.asax.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Http.WebHost;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
}
METTRE À JOUR
Après avoir installé via Nuget WebAPI WebHost (suggestion de @ sa_ddam213), certains problèmes ont été résolus, mais maintenant, cette erreur est survenue lors de l’exécution de mon application.
Impossible de charger le fichier ou l'assembly 'System.Net.Http' ou l'un de ses dépendances. La définition du manifeste de l'Assemblée localisée n'est pas correspondre à la référence de l'Assemblée
Le fichier Web.config contient l'assembly
<dependentAssembly>
<assemblyIdentity name="System.Web.Http" publicKeyToken="31BF3856AD364E35" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-5.2.0.0" newVersion="5.2.0.0"/>
</dependentAssembly>
Je désinstalle certains paquets de nuget dans mon projet, y compris le MVC, et je les réinstalle de nouveau. Résolu. Merci à tous pour m'aider.
Une réinstallation forcée de l'API Web pourrait faire le travail:
update-package Microsoft.aspnet.webapi -reinstall
J'ai fait:
get-project <project_name> | uninstall-Package Microsoft.AspNet.WebApi.WebHost -force
Puis réinstallé (avec une version spécifique cohérente avec celles des autres projets)
get-project <project_name> | install-Package Microsoft.AspNet.WebApi.WebHost -Version 5.2.2
Cela a résolu le problème pour moi.
Mettez à jour vos paquets NuGet. Travaillé pour moi.
Essayez de mettre à jour vos paquets en exécutant la commande suivante sur la console nugetmanager
update-package Microsoft.aspnet.webapi.webhost -reinstall
Plus précisément pour moi, j'ai téléchargé de TFS la solution de quelqu'un à l'atelier et j'ai eu l'erreur
System.Web.Http.HttpConfiguration' does not contain a definition for 'MapHttpAttributeRoutes' and no extension method 'MapHttpAttributeRoutes'
J'étais A PROPOS DE allez de l'avant avec la réinstallation de l'API Web, mais je connais des expériences passées. La chaîne de dépendance de l'ordre dans lequel vous installez des éléments peut vous donner un peu de drame.
JSON est aléatoire, car j’ai parfois vu la version mise à jour de JSON force et désinstaller une version plus récente d’un autre package et installer une version plus ancienne car elle pensait "connaître le mieux.
Pour moi UPDATE JSON via nuget était tout ce que j'avais à faire.
1) Vérifiez dans votre dossier de solution packages\Microsoft.AspNet.WebApi.Client.5.2.3\lib\net45 que System.Web.Http.dll est disponible ou non. Il devrait être là. S'il n'est pas disponible, copiez-le de tout autre dossier de packages de projet en cours d'exécution . 2) Supprimez la référence de System.Web.Http.dll de votre projet . 3) Ajoutez une nouvelle référence en pointant sur le nouveau fichier .dll correspondant aux packages.\Microsoft.AspNet.WebApi.Client.5.2.3\lib\net45\System.Web.Http.dll