Today we started getting an error from three web applications. Two were web services and one was an ASP.NET MVC website. The error was:
Could not load file or assembly ‘System.Net.Http, Version=18.104.22.168, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a’ or one of its dependencies. The located assembly’s manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
The error was occurring on this standard line in the global.asax file:
Looking at the trace statements on the error page, there was a mention of a binding redirect, which I recall seeing in the web.config of the site. That section in the web config looked like:
<runtime> <assemblybinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentassembly> <assemblyidentity culture="neutral" publickeytoken="b03f5f7f11d50a3a" name="System.Net.Http"> <bindingredirect newversion="22.214.171.124" oldversion="0.0.0.0-126.96.36.199"> </bindingredirect> </assemblyidentity> </dependentassembly> </assemblybinding> </runtime>
This config block had been in place since December, 2015. The block seems to have been added by a NuGet package at the same time, possibly with a Framework version upgrade.
However it originally ended up there, removing the config block allowed the sites to launch again. It’s unknown why this started happening after a Visual Studio upgrade.