2014-05-05 6 views
5

Ich bin Einstellung der API für meine MVC-4 app und wenn ich diese Zeile in Globals.asax.cs unkommentiert:Fileloadexception wurde nicht behandelt durch Benutzercode

WebApiConfig.Register(GlobalConfiguration.Configuration); 

erhielt ich diese Ausnahme, wenn ich mein Projekt gestartet Sicherung:

An exception of type 'System.IO.FileLoadException' occurred in mscorlib.dll but was not handled in user code 

Additional information: Could not load file or assembly 'Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) 

Was soll ich tun?


Update 1 (Screenshots)

von dem, was ich sagen kann, sieht JSON.Net wie es richtig installiert ist.

enter image description here

enter image description here

enter image description here


Update 2

JSON.Net scheint tatsächlich zu funktionieren, wenn die API-Routen in Globals.Asax sind auf Kommentar. Dies wirft keinen Fehler:

public ActionResult Index() 
{ 
    var foo = Newtonsoft.Json.JsonSerializer.Create(); 
    return View(); 
} 

Visual Studio nur beschwert, wenn diese Linie unkommentiert ist:

WebApiConfig.Register(GlobalConfiguration.Configuration); 
+0

Nicht eine Lösung für Ihr Problem, aber Consid Aktualisierung auf Web API 2.12. –

+0

keine Notwendigkeit, sich um dieses Problem kümmern, nur JSON.NET-Paket von nuget Paket-Manager installieren, dann wird es gut funktionieren. –

Antwort

12

Dies ist mir auch heute aufgefallen. Scheint so, als hätte es ein Update für json.net (jetzt Version 6.0.3) gegeben, das bewirkt, dass nugget die neueste Version nach dem Build herunterladen kann. Verweise auf alte json.net-Bibliotheken werden jedoch möglicherweise nicht aktualisiert, wenn Abhängigkeiten zu anderen Bibliotheken bestehen.

Lösung: Öffnen Sie manuell die Manage Nuget-Pakete für das Lösungsfenster und deinstallieren Sie die alte (n) Version (en) von json.net. Dann nimm die neueste Version und installiere für alle benötigten Projekte. Das Fest die genaue Fehler Sie hatte für mich ...

- bearbeiten -
Ok, so fand ich heraus, dass diese Lösung für mich vor Ort gearbeitet, aber der Ferne war dies nicht meine Probleme zu lösen. Sieht so aus, als gäbe es einige alte Abhängigkeiten von anderen libs, die auf die Version 4.5.0.0 von json.net verweisen. Weitere Themen auf Stackoverflow.com bieten die folgende Lösung.

Fügen Sie diese Baugruppenbindungsumleitung zu Ihrem Web hinzu.config-Datei:

<configuration> 
    <runtime> 
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
      <dependentAssembly> 
       <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> 
       <bindingRedirect oldVersion="1.0.0.0-4.5.0.0" newVersion="6.0.0.0"/> 
      </dependentAssembly> 
     </assemblyBinding> 
    </runtime> 
</configuration> 
+1

Heilige Kuh. Du hast den Nagel auf den Kopf getroffen. Vielen Dank!! – drewwyatt

+0

Unglaublich. Wie lassen wir Microsoft mit Kludges so davonkommen? #smh – Rap

+3

Danke! Es ist jetzt Juli 2015 und ich musste zu oldVersion = "1.0.0.0-6.0.0.0" und newVersion = "7.0.0.0" wechseln. – Patrick

0

Wahrscheinlich Newtonsoft.Json DLL ist nicht richtig eingesetzt.

Stellen Sie sicher, Sie haben die Newtonsoft.Json DLL in Ihrem Ordner (IIS/Projekt) bin.
Alternativ können Sie diese DLL auch in GAC installieren, wenn Sie sie für mehrere Projekte verwenden möchten.

+0

Das ist die Sache, der NuGet-Paket-Manager zeigt, dass es installiert ist, und der Pfad, der in Referenzen aufgeführt ist, sieht aus wie es auf die DLL in meinem Dateisystem verweist. Ich werde meinen Beitrag mit Screenshots aktualisieren. – drewwyatt

0

Es sieht so aus, als ob Sie Newtonsoft.Json nicht installiert/referenziert haben. Die Web-API verlässt sich darauf und wird erst dann richtig funktionieren, wenn Sie diese Abhängigkeit auflösen. Sie können es über NuGet installieren.

0

einfach Ihre Newtonsoft.Json dll aus Binärordner dann öffnen package.config Datei löschen und Newtonsoft.Json Eintrag entfernen von dort dann wieder installiert Ihre Newtonsoft.Json durch Befehl aber nicht neuer installiert Version, wenn Sie dieses Problem mit neuerer Version findet alte Version Befehl

wie Gesicht Install-Package Newtonsoft.Json -Version 6.0.8 jetzt-Paket installieren Newtonsoft.Json -Version 7.0.1 ist auch aviable aber ich schlage vor, Sie installiert 6.0.8 Version seine Arbeit

Verwandte Themen