C# – Visual Studio 2012 Web API project won’t run – can’t find Newtonsoft.Json

asp.net-web-apicvisual studio 2012

After running a clean solution and rebuild, my MVC 4 Web API project stops working. It's can't find Newtonsoft.Json.

I know that MS is using this as the default JSON serializer now – but its not in the references list for the project, and I can't add it from NuGet as it says it's already installed.

Does anyone have any idea here as to what could be going wrong?

Full stack trace:

[FileNotFoundException: Could not load file or assembly
'Newtonsoft.Json, Version=4.5.0.0, Culture=neutral,
PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The
system cannot find the file specified.]
MvcWebRole1.WebApiApplication.Application_Error() in d:\Data\Source
Controlled
Projects\georace\georace\Server\GeoRaceServer\MvcWebRole1\Global.asax.cs:70

[HttpException (0x80004005): Could not load file or assembly
'Newtonsoft.Json, Version=4.5.0.0, Culture=neutral,
PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The
system cannot find the file specified.]
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 state,
MethodInfo[] handlers, IntPtr appContext, HttpContext context) +304
System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr
appContext, HttpContext context) +404
System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr
appContext) +475

[HttpException (0x80004005): Could not load file or assembly
'Newtonsoft.Json, Version=4.5.0.0, Culture=neutral,
PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The
system cannot find the file specified.]
System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +12851296
System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context)
+159 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest
wr, HttpContext context) +12679949

Best Answer

Ok - found a work around myself, posting in case someone else gets caned by this MS bug. The problem is that you can't add a NuGet reference as it's already included in the packages by default. So...

  1. Open up packages.config
  2. Delete the Newtonsoft.Json entry.
  3. Save and Build
  4. Re-add Newtonsoft.Json from NuGet.
  5. Build and run