2013-05-28 7 views
24

Ich baue eine Website mit MVC4. Ich konnte nicht einmal anfangen, dass ich einen seltsamen Fehler habe. Dies ist mein Code:HttpConfiguration fehlt Assembly

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

Die Fehlermeldung: Der Typ oder Name der Assembly ‚HttpConfiguration‘ nicht im Namensraum existieren ‚System.Web.Http‘ (sind eine using-Direktive oder ein Assemblyverweis fehlt ?)

Das Readonly-Feld RouteParameter wird ebenfalls nicht erkannt. Es kommt mir vor, dass es etwas mit der Version zu tun haben muss, meine System.Web dll ist Version 4.0.0.0.

Eine weitere zusätzliche Information ist, dass wenn ich „using System.Web.“ Eingeben, TUT Intellisense die DLL-.http erkennen

JEDOCH im Code, es nicht eine ihrer Parameter erkennen.

+1

Die 'HttpConfiguration' Klasse in der' System.Web.Http' Bibliothek ist. – Jay

+1

Ja, und der Code zeigt an, dass er System.Web.Http verwendet. Es erkennt jedoch nicht HttpConfiguration (noch erkennt es RouteParameter) – Soph

+2

Die 'System.Web' Assembly enthält Klassen im Namespace System.Web.Http, weshalb Sie dort keinen Fehler sehen, jedoch die' HttpConfiguration' Klasse befindet sich in der Assembly 'System.Web.Http', nicht im' System.Web'. Können Sie überprüfen, ob beide Baugruppen referenziert sind? – Jay

Antwort

24

Ich löste es. Das Problem war, dass ich beim Erstellen der Site alle Pakete über Nuget aktualisiert habe. Da ich Entity Framework jedoch nicht verwenden wollte, habe ich es deinstalliert. Um dieses Paket zu deinstallieren, musste ich auch Microsoft.AspNet.Providers.Core 1.2 deinstallieren ... und das tat ich auch.

Dieses fehlende Paket versaut Dinge. Ich räumte das Projekt ab und begann von vorne. Ich hätte auch den Update-Package-Befehl in der PM-Konsole verwenden und alle verlorenen Pakete wiederherstellen können. Da ich im Vergleich zu der kleinen (neben Null) Arbeit, die ich gemacht hatte, so viel Unordnung angerichtet hatte, beschloss ich, es noch einmal zu beginnen.

Danke trotzdem!

+10

Diese Lösung hat mich auf halbem Wege gebracht ... benötigt, um ein neues 'Install-Paket Microsoft.AspNet.WebApi.Core' nach der Aktualisierung der Pakete durchzuführen, um es endlich zu lösen. – Kanapolis

+0

Ein neues Install-Paket Microsoft.AspNet.WebApi.Core löste das Problem auch für mich. Vielen Dank @Kanapolis –

+0

Wenn Sie mit einem Fehler wie 'install.ps1 kann nicht geladen werden, da auf diesem System die Ausführung von Skripten deaktiviert ist 'bei der Installation dieses Pakets ausgeführt werden, führen Sie diesen Befehl in PowerShell: ExecutionPolicy Unrestricted -Scope CurrentUser und verwenden Sie diesen Befehl in Paket-Manager-Konsole: 'Update-Paket -install Microsoft.AspNet.WebApi.Core' – eFarzad

1

Wir haben dieses Problem seit vergangener Woche bei einem unserer Projekte erlebt. Das Projekt war in Ordnung vor 2 Wochen & dann begann plötzlich diese Ausnahme zu werfen. In den nugget-Paketen für dieses Projekt wurden keine Änderungen vorgenommen. Selbst das Auschecken einer älteren Revision von SVN führte nicht zu einem erfolgreichen Build.

Aus Verzweiflung aktualisierten wir die Lösung von VS2012 zu VS2013 & Lo und siehe, es baute! Wir vermuten, aber nicht in der Lage waren, um zu bestätigen, dass ein Werkzeug Update in Visual Studio 2013 getan 2012.

diese Bibliothek in Visual Studio betroffen war Dies kann nicht für alle Arbeit, aber es gibt eine Option, um die Lösung zu aktualisieren, scheint um das Problem zu lösen.

1

Stellen Sie sicher, dass Sie für Framework 4.5 und nicht 4.0 kompilieren. Das löste das Problem für mich

2

Für andere mit diesem Problem konfrontiert, war meine Lösung anders. Zum einen wurde ich ein Projekt von .net 4.5 Herabstufung 4.0 .net, aber die Symptome waren die gleichen wie oben:

Der Typ oder die Namen der Assembly ‚HttpConfiguration‘ nicht in existiert der Namespace ‚System. Web.Http '(fehlt Ihnen eine using-Direktive oder eine Assembly-Referenz?)

ich auf einer Blog-Post gestolpert, die erklärten, dass es eine Verbindung zwischen Newtonsoft.Json und HttpConfiguration ist, entfernte ich den Verweis auf Newtonsoft.Json aus dem Projekt und die packages.config Datei dann Newtonsoft.Json aus der Paket-Manager-Konsole neu installiert:

Install-Package Newtonsoft.Json 

war ich nicht in der Lage Newtonsoft.Json aus der Paket-Konsole durch andere Abhängigkeiten verwalten zu deinstallieren, daher die Notwendigkeit, die Referenz manuell zu entfernen.

Hier ist der Link zum Artikel: Newtonsoft.Json Hidden Dependencny on HttpConfiguration Breaks Compilation

+3

Anstatt Dinge manuell zu entfernen, neu installiert das Paket von Nuget Console: Update-Paket-Install Newtonsoft.Json – Riga

0

Noch ein anderes Szenario. Ich akzeptiere, dass dies nur lose auf die Frage bezogen ist, da ich reine Web-API bin. Aber meine Suche führte mich hier so ...

Ich hatte ein bestehendes Projekt in der Lösung, die Framework 4.5.2 ausgerichtet.

Als ich ein neues Projekt hinzufügte, ging es in 4.5 als ich nicht genug Aufmerksamkeit auf. HttpConfiguration ist ordnungsgemäß aus der Web-API-Registrierungsmethode verschwunden.

Durch Ändern des Ziels auf 4.5.2 wurde das HttpConfiguration-Problem behoben. Wohlgemerkt, es hat auch andere Probleme mit RouteParameter verursacht: Ich hatte jetzt zwei Definitionen, eine in System.Web.Http und die andere in System.Web.UI.WebControls. Einfach genug, denke ich.

Mein Gefühl ist, dass es mehr um dies ...

2

1.In Mappen-Explorer mit der rechten Maustaste auf den Projektknoten und klicken Sie auf Verweis hinzufügen.

2. Wählen Sie im Dialogfeld Referenz hinzufügen die Registerkarte Assemblies. Und geben Sie "system.web.http" in das Suchfeld in der oberen rechten Ecke ein.

3.Wählen Sie die Komponenten aus, die Sie referenzieren möchten. Wenn diese Option bereits ausgewählt ist, entfernen Sie zuerst die Referenz als ** und fügen Sie dann Referenz erneut hinzu.

Das Projekt erneut erstellen. Bitte lassen Sie mich wissen, wenn es funktioniert. Vielen Dank.

+0

Ich bin bereits bei .NET 4.5 und Newtonsoft.Json neu installiert, aber nichts funktioniert, außer diesem. Ich weiß nicht, wie ich diese Referenz verliere, danke! –

1

wenn Sie alle AspNet-Pakete von Nuget aktualisiert und neu installiert, und scheint es gab keine geeignete Lösung - Neustart von Visual Studio gespeichert mich.

2

Ich stieß auf diesen Fehler beim Klonen einer MVC 4.0-Anwendung, die zuvor für mich gearbeitet hat. Mein Problem war, dass das NuGet-Paket Microsoft.Net.Http nicht ordnungsgemäß wiederhergestellt wurde. Ich löste es aus der NuGet Konsole:

Update-Package -reinstall Microsoft.Net.Http

Verwandte Themen