Visual Studio 2012 Web API项目将无法运行 - 找不到Newtonsoft.Json

Bla*_*Spy 59 c# asp.net-web-api visual-studio-2012

运行干净的解决方案并重建后,我的MVC 4 Web API项目停止工作.它找不到Newtonsoft.Json.

我知道MS现在使用它作为默认的JSON序列化程序 - 但它不在项目的引用列表中,我不能从NuGet中添加它,因为它已经安装了它.

有谁在这里有任何想法可能会出错?

完整堆栈跟踪:

[FileNotFoundException:无法加载文件或程序集'Newtonsoft.Json,Version = 4.5.0.0,Culture = neutral,PublicKeyToken = 30ad4fe6b2a6aeed'或其依赖项之一.系统找不到指定的文件.]
d:\ Data\Source Controlled Projects\georace\georace\Server\GeoRaceServer\MvcWebRole1\Global.asax.cs中的MvcWebRole1.WebApiApplication.Application_Error():70

[HttpException(0x80004005):无法加载文件或程序集"Newtonsoft.Json,Version = 4.5.0.0,Culture = neutral,PublicKeyToken = 30ad4fe6b2a6aeed"或其中一个依赖项.系统找不到指定的文件.]
System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context,HttpApplication app)+12838633
System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext,HttpContext context,MethodInfo [] handlers)+175
System.Web. HttpApplication.InitSpecial(HttpApplicationState状态,MethodInfo的[]处理程序,IntPtr的appContext,HttpContext的上下文)304
System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr的appContext,HttpContext的上下文)404
System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr的appContext)+ 475

[HttpException(0x80004005):无法加载文件或程序集"Newtonsoft.Json,Version = 4.5.0.0,Culture = neutral,PublicKeyToken = 30ad4fe6b2a6aeed"或其中一个依赖项.系统无法找到该文件指定.]
System.Web.HttpRuntime.FirstRequestInit(HttpContext的上下文)12851296 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext的上下文)159 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest WR,HttpContext的上下文)+ 12679949

Bla*_*Spy 81

好的 - 找到一个自己的工作,发布以防其他人被这个MS错误所控制.问题是您无法添加NuGet引用,因为它已默认包含在包中.所以...

  1. 打开packages.config
  2. 删除Newtonsoft.Json条目.
  3. 保存和构建
  4. 从NuGet重新添加Newtonsoft.Json.
  5. 建立并运行

  • 您也可以在程序包管理器控制台中键入:`Update-Package Newtonsoft.Json -Reinstall`. (43认同)
  • 这适用于我的开发,但在发布到服务器时仍然存在相同的错误. (5认同)
  • @ theB3RV,从菜单栏转到:**工具**,选择**Library Package Manager**然后单击**Package Manager Console**.http://docs.nuget.org/docs/start-here/using-the-package-manager-console (2认同)
  • @ theB3RV在菜单栏上,查看 - >其他Windows->程序包管理器控制台. (2认同)

Rub*_*zzo 47

对于NuGet 安装的任何要重新安装的软件包,只需在软件包管理器控制台中键入以下命令:

在任何项目中更新:

Update-Package Newtonsoft.Json -Reinstall
Run Code Online (Sandbox Code Playgroud)

更新特定项目

Update-Package Newtonsoft.Json -Reinstall -Project My.App
Run Code Online (Sandbox Code Playgroud)

  • 请注意,您需要更新版本的NuGet才能使用"-Reinstall"参数.我认为[版本必须> = 2.1](http://docs.nuget.org/docs/release-notes/nuget-2.1)否则它无法识别您的命令. (2认同)

Cle*_*ud8 35

对我来说,修复此错误的唯一方法是将缺少的部分添加到我的web.config文件中,我从这里得到了这个答案:https: //stackoverflow.com/a/20414714/940783

这是我需要添加的内容:

  <dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
  </dependentAssembly>
Run Code Online (Sandbox Code Playgroud)