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);
}
}
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>
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.
Eine erneute Installation der Web-API erzwingt die Aufgabe:
update-package Microsoft.aspnet.webapi -reinstall
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.
Aktualisieren Sie Ihre NuGet-Pakete. Arbeitete für mich.
Versuchen Sie, Ihre Pakete zu aktualisieren, indem Sie den folgenden Befehl auf der Konsole nugetmanager
ausführen
update-package Microsoft.aspnet.webapi.webhost -reinstall
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) Ü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