2014-05-05 10 views
5

ja konfigurowania API dla mojej aplikacji MVC-4 i kiedy Odkomentowano tę linię w Globals.asax.cs:FileLoadException był nieobsługiwany przez kod użytkownika

WebApiConfig.Register(GlobalConfiguration.Configuration); 

dostałam ten wyjątek, kiedy zacząłem mój projekt kopia zapasowa:

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) 

Co należy zrobić?


Update 1 (zrzuty ekranu)

od tego, co mogę powiedzieć, JSON.Net wygląda ona prawidłowo zainstalowana.

enter image description here

enter image description here

enter image description here


Aktualizacja 2

JSON.Net rzeczywiście wydaje się działać, gdy trasy API są wypowiedziało się w Globals.Asax. To nie rzucać żadnych błędów:

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

Visual Studio narzeka tylko wtedy, gdy linia jest komentarzem:

WebApiConfig.Register(GlobalConfiguration.Configuration); 
+0

Not a fix dla twojego problemu, ale Rozważna er aktualizacja do Web API 2.12. –

+0

nie trzeba się martwić o ten problem, wystarczy zainstalować pakiet JSON.NET z menedżera pakietów nuget, to będzie działać poprawnie. –

Odpowiedz

12

To również mi się dziś zdarzyło. Wygląda na to, że była aktualizacja dla json.net (teraz wersja 6.0.3), powodująca, że ​​nuget pobierał najnowszą wersję po kompilacji. Jednak odniesienia do starych bibliotek json.net mogą nie zostać zaktualizowane, gdy istnieją deporty do innych bibliotek.

Rozwiązanie: Ręcznie otwórz pakiety zarządzania nugetami dla okna rozwiązania i odinstaluj stare wersje json.net. Następnie weź najnowszą wersję i zainstaluj dla wszystkich potrzebnych projektów. Że ustalony dokładny opis błędu miałeś dla mnie ...

- Edit -
Ok, więc okazało się, że to rozwiązanie pracował dla mnie na miejscu, ale zdalnie to nie rozwiąże moich problemów. Wygląda na to, że istnieją pewne stare zależności od innych bibliotek mocno odwołujące się do wersji json.net 4.5.0.0. Więcej tematów na Stackoverflow.com zapewniają następujące rozwiązanie.

Dodaj to powiązanie wiązania zespołu przekierowujące do sieci WWW .config file:

<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

Święta krowa. Przybiłeś to. Dzięki!! – drewwyatt

+0

Niewiarygodne. W jaki sposób możemy pozwolić, aby Microsoft pozbył się takich kludów? #smh – Rap

+3

Dziękujemy! Jest lipiec 2015 i musiałem zmienić na oldVersion = "1.0.0.0-6.0.0.0" i newVersion = "7.0.0.0". – Patrick

0

Najprawdopodobniej Newtonsoft.Json DLL nie jest prawidłowo wdrożone.

Sprawdź, czy biblioteka DLL znajduje się w folderze (IIS/projekt) bin.
Alternatywnie można również zainstalować tę bibliotekę DLL na GAC, jeśli zamierza się jej używać w wielu projektach.

+0

To jest coś, menedżer pakietów NuGet pokazuje, że jest zainstalowany, a ścieżka wymieniona w References wygląda jak wskazuje na bibliotekę DLL w moim systemie plików. Zaktualizuję mój post zrzutami ekranu. – drewwyatt

0

Wygląda na to, że nie masz zainstalowanego/odniesienia do Newtonsoft.Json. Web API opiera się na tym i nie będzie działał poprawnie, dopóki nie rozwiążesz tej zależności. Możesz zainstalować go poprzez NuGet.

0

Wystarczy usunąć Newtonsoft.Json dll z folderu bin następnie plik otwarty package.config i usunąć wpis Newtonsoft.Json stamtąd następnie ponownie zainstalować swój Newtonsoft.Json przez komendę, ale nie zainstalowany nowszy wersja, jeśli napotkasz ten problem w nowszej wersji znajdź starszą wersję polecenie

jak Zainstaluj pakiet Newtonsoft.Json -Version 6.0.8 teraz Zainstaluj-Pakiet Newtonsoft.Json -Version 7.0.1 jest również dostępny, ale proponuję ci zainstalowana wersja 6.0.8 jego działająca

Powiązane problemy