Alex Rivera | Logout

Could not load file or assembly 'System.Net.Http, Version=2.0.0.0 in MVC4 Web API

Asked 2012-02-24T14:00:11.033
93

I have a bit of a weird problem.
I developed an app with MVC 4 and the new Web API and it works fine locally. I installed MVC4 on the server and deployed the app. Now I get the following error:

Could not load file or assembly 'System.Net.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in

Funny enough, the version of System.Net.Http that I locally have either in my package folder or in the ASP.NET MVC 4\Assemblies folder is 1.0.0.0. I actually removed the reference to System.Net.Http from my project, but I still get the same message. I'm a bit confused about where it gets the 2.0.0.0 reference from and why it would work locally but not on the server.

Looking at the nuget dependencies:

ASP.NET WEb API Core Libraries (Beta) depends on System.Net.Http.Formatting.
And System.Net.Http.Formatting depends on System.Net.Http.
I guess that is where this comes from. But I do have Version 2.0.20126.16343 of this package installed, it's just that the dll inside has version 1.0.0.0

Am I missing something?

UPDATE:

This is a sub-application of another ASP.NET app, but the other one is still based on WebForms. So, something is getting messed up. But if I do a clean under the assembly section in the web.config if does not even find the app itself anymore.

Edit
Report

1 Answer

1

In my case I unintentionally added a dependency to System.Net.Http version 2.1.10.0 through NuGet. I couldn’t get rid of it in the NuGet Package Manager (because other packages seemed to be dependent on it). However those packages aren’t dependent on this particular version. Here's what I did in order to get rid of it (you can also use the NuGet console instead (using the –force parameter):

  • Change version of Microsoft.Net.Http in packages.config from 2.1.10.0 to 2.0.0.0
  • Uninstall BCL Portability Pack in NuGet Package Manager
  • Manually get rid of dependent libraries (System.Net.Http.* which have version 2.1.10.0)
  • Add a reference to System.Net.Http 2.0.0.0
answered 2013-06-20T07:48:25.883

Your Answer