wake-up-neo.net

WebAPI hat einen Referenzfehler gefunden, wenn ich die Assembly habe

Ich habe in meiner Lösung eine MVC 4-Web-API-Anwendung erstellt. Ich erhalte jedoch jetzt 2 Fehler und brauche Hilfe. 

'System.Web.Http.HttpConfiguration' enthält keine Definition für 'MapHttpAttributeRoutes' und keine Erweiterungsmethode 'MapHttpAttributeRoutes' akzeptiert ein erstes Argument vom Typ 'System.Web.Http.HttpConfiguration' wurde gefunden (fehlt eine Direktive oder eine Assemblyreferenz?)

Dieser Fehler tritt bei dem folgenden Code auf 

Datei: WebApiConfig.cs (im Ordner 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 }
            );
        }
    }

Eine andere ist in der Global.asax

'System.Web.Http.GlobalConfiguration' enthält keine Definition für 'Konfigurieren'

Datei: 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

UPDATE

Nach der Installation des WebAPI WebHost über Nuget (Vorschlag von @ sa_ddam213) werden einige Probleme behoben, die jedoch beim Ausführen meiner Anwendung diesen Fehler erhalten

Datei oder Assembly 'System.Net.Http' oder einer ihrer .__-Dateien konnte nicht geladen werden. Abhängigkeiten. Die Manifestdefinition der gefundenen Assembly lautet nicht passen Sie die Assembly-Referenz an

Die Datei Web.config enthält die 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

Ich deinstalliere einige Nuget-Pakete in meinem Projekt, einschließlich der MVC, und installiere alles neu. Aufgelöst. Danke an alle für die Hilfe.

7
Lucas_Santos

Eine erneute Installation der Web-API erzwingt die Aufgabe:

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

Ich tat:

get-project <project_name> | uninstall-Package Microsoft.AspNet.WebApi.WebHost -force

Dann neu installiert (mit einer bestimmten Version, die mit der in anderen Projekten übereinstimmt)

get-project <project_name> | install-Package Microsoft.AspNet.WebApi.WebHost -Version 5.2.2

Dies hat das Problem für mich gelöst.

11
garryp

Aktualisieren Sie Ihre NuGet-Pakete. Arbeitete für mich.

6
FAHID

Versuchen Sie, Ihre Pakete zu aktualisieren, indem Sie den folgenden Befehl auf der Konsole nugetmanager ausführen

update-package Microsoft.aspnet.webapi.webhost -reinstall
5

Speziell für mich habe ich von TFS jemanden bei Works-Lösung heruntergeladen und den Fehler erhalten 

System.Web.Http.HttpConfiguration' does not contain a definition for 'MapHttpAttributeRoutes' and no extension method 'MapHttpAttributeRoutes' 

Ich war ABOUT TO führe die Neuinstallation von Web-API aus, aber ich weiß aus früheren Erfahrungen, dass die Abhängigkeitskette der Reihenfolge, in der Sie Elemente installieren, zu einem gewissen Drama führen kann.

JSON ist ein Hit oder Miss, da ich manchmal eine aktualisierte Version von JSON erzwungen und eine neuere Version eines anderen Pakets deinstalliert und eine ältere Version installiert habe, als sie dachte "es wusste am besten.

Für mich UPDATE JSON via nuget war alles was ich tun musste. 

1
Tom Stickel

1) Überprüfen Sie in Ihrem Lösungsordner die Pakete\Microsoft.AspNet.WebApi.Client.5.2.3\lib\net45, ob System.Web.Http.dll verfügbar ist oder nicht. Es sollte da sein. Wenn nicht verfügbar, kopieren Sie es aus einem anderen laufenden Projektpaketordner . 2) Entfernen Sie die Referenz von System.Web.Http.dll aus Ihrem Projekt . 3) Fügen Sie eine neue Referenz hinzu, indem Sie auf die neue .dll-Datei, die Pakete enthält, verweisen\Microsoft.AspNet.WebApi.Client.5.2.3\lib\net45\System.Web.Http.dll

0
AtyulyaKadam