web-dev-qa-db-fra.com

WebAPI a trouvé une erreur de référence lorsque j'ai l'assemblage

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);
    }
}

enter image description here

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>
48
Lucas_Santos

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.

7
Lucas_Santos

Une réinstallation forcée de l'API Web pourrait faire le travail:

 update-package Microsoft.aspnet.webapi -reinstall
94
Dan Ochiana

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.

11
garryp

Mettez à jour vos paquets NuGet. Travaillé pour moi.

6
FAHID

Essayez de mettre à jour vos paquets en exécutant la commande suivante sur la console nugetmanager

update-package Microsoft.aspnet.webapi.webhost -reinstall
5
Rajeev Sirohi Rajee

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
Tom Stickel

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

0
AtyulyaKadam