2015-04-26 50 views
2

在我的MVC 4 Web API項目停止工作。它找不到Newtonsoft.Json。 運行此代碼後:ASP.NET MVC 4 WebAPI PostAsJsonAsync Newtonsoft.Json錯誤

Dim response As HttpResponseMessage = MyHttpClient.PostAsJsonAsync("Api/Test", MyObject).Result 

我得到消息的錯誤:

型 'System.IO.FileLoadException' 未處理的異常發生在System.Net.Http.Formatting.dll

其他信息:無法加載文件或程序集'Newtonsoft.Json,Version = 4.5.0.0,Culture = neutral,PublicKeyToken = 30ad4fe6b2a6aeed'或其某個依賴項。定位的程序集清單定義與程序集引用不匹配。 (異常來自HRESULT:0x80131040)

我知道MS現在使用這個作爲默認的JSON序列 - 和它的引用。我試圖從NuGet更新Newtonsoft.Json,但我找不到它;我找到了「Json.Net」。所以我使用包管理器控制檯重新安裝

Update-Package Newtonsoft.Json –Reinstall 

但仍然無法正常工作。 有沒有人知道爲什麼這會出錯?

回答

2

看來您正在使用一些過時的庫,這取決於舊版本的JSON.NET。你可以嘗試安裝它的特定版本:

Update-Package Newtonsoft.Json -Version 4.5.11 

如果無法告訴你一些其他的包需要JSON.NET的新版本,那麼你就需要通過升級過時的庫來解決這一衝突,你使用和依賴於JSON.NET 4.5

+0

我得到 參數集不能使用指定的命名參數來解決。 在線:1 char:15 + Update-Package <<< Newtonsoft.Json -Reinstall -Version 4.5.11 + CategoryInfo:InvalidArgument:(:) [Update-Package],ParameterBindingException + FullyQualifiedErrorId:AmbiguousParameterSet,NuGet .PowerShell.Commands.UpdatePackageCommand –

+0

對不起,我犯了一個錯字,只是擺脫'-Reinstall'參數 - 我已經更新了我的答案。 –

+0

更新程序包:將'Newtonsoft.Json 6.0.8'更新爲'Newtonsoft.Json 4.5.11'失敗。無法找到兼容於'Newtonsoft.Json 4.5.11'的'WebGrease,Microsoft.AspNet.WebApi.Client'版本 。 在線:1 char:15 + Update-Package <<<< Newtonsoft.Json -Version 4.5.11 + CategoryInfo:NotSpecified:(:) [Update-Package],Exception + FullyQualifiedErrorId:NuGetCmdletUnhandledException,NuGet.PowerShell .Commands.UpdatePackageCommand –

2

嘗試在你的web.config文件中添加這一節裏面<runtime><assemblyBinding>

<dependentAssembly> 
     <assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed" /> 
     <bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="4.5.0.0" /> 
     </dependentAssembly> 
+0

存在於我的web.config –

+0

我知道它應該工作,但它從來沒有爲我做過 –