无法加载文件或程序集'System.Net.Http,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'

时间:2017-04-02 19:25:21

标签: asp.net asp.net-mvc-4 asp.net-web-api asp.net-web-api2

我正在使用WEB API 2制作Web应用程序。 以前,我的项目运行良好,没有任何错误。错误只是在我将我的nuget包更新到最新版本之后才出现。

目前,当我启动我的Web应用程序时,它会抛出一个错误:

enter image description here

这是抛出异常的命令(在Startup.cs中)

GlobalConfiguration.Configure(ApiRouteConfig.Register);

我一次又一次地尝试重新安装WEB API 5.2.3但没有运气。错误不断发生。

这是我的packages.config

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Autofac" version="4.4.0" targetFramework="net461" />
  <package id="Autofac.Mvc5" version="4.0.1" targetFramework="net461" />
  <package id="Autofac.SignalR2" version="4.0.0" targetFramework="net46" />
  <package id="Autofac.WebApi2" version="4.0.1" targetFramework="net461" />
  <package id="EntityFramework" version="6.1.3" targetFramework="net46" />
  <package id="JWT" version="1.3.4" targetFramework="net461" />
  <package id="log4net" version="2.0.8" targetFramework="net461" />
  <package id="Microsoft.AspNet.Cors" version="5.2.3" targetFramework="net46" />
  <package id="Microsoft.AspNet.Mvc" version="5.2.3" targetFramework="net46" />
  <package id="Microsoft.AspNet.Razor" version="3.2.3" targetFramework="net46" />
  <package id="Microsoft.AspNet.SignalR.Core" version="2.2.1" targetFramework="net46" />
  <package id="Microsoft.AspNet.SignalR.SystemWeb" version="2.2.1" targetFramework="net46" />
  <package id="Microsoft.AspNet.WebApi" version="5.2.3" targetFramework="net461" />
  <package id="Microsoft.AspNet.WebApi.Client" version="5.2.3" targetFramework="net461" />
  <package id="Microsoft.AspNet.WebApi.Core" version="5.2.3" targetFramework="net461" />
  <package id="Microsoft.AspNet.WebApi.Cors" version="5.2.3" targetFramework="net46" />
  <package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.3" targetFramework="net461" />
  <package id="Microsoft.AspNet.WebPages" version="3.2.3" targetFramework="net46" />
  <package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.3" targetFramework="net461" />
  <package id="Microsoft.IdentityModel.Logging" version="1.1.3" targetFramework="net461" />
  <package id="Microsoft.IdentityModel.Tokens" version="5.1.3" targetFramework="net461" />
  <package id="Microsoft.Net.Compilers" version="2.0.1" targetFramework="net461" developmentDependency="true" />
  <package id="Microsoft.Owin" version="3.0.1" targetFramework="net46" />
  <package id="Microsoft.Owin.Cors" version="3.0.1" targetFramework="net46" />
  <package id="Microsoft.Owin.Host.SystemWeb" version="3.0.1" targetFramework="net46" />
  <package id="Microsoft.Owin.Security" version="3.0.1" targetFramework="net46" />
  <package id="Microsoft.Owin.Security.Jwt" version="3.0.1" targetFramework="net461" />
  <package id="Microsoft.Owin.Security.OAuth" version="3.0.1" targetFramework="net461" />
  <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net46" />
  <package id="Modernizr" version="2.8.3" targetFramework="net46" />
  <package id="Newtonsoft.Json" version="10.0.2" targetFramework="net461" />
  <package id="Nustache" version="1.16.0.4" targetFramework="net461" />
  <package id="Owin" version="1.0" targetFramework="net46" />
  <package id="ToolKit-DataAnnotations" version="1.0.4" targetFramework="net461" />
</packages>

我在互联网上搜索了很多解决方案,但对我没用。我不知道我的项目发生了什么。它花了我一天没有任何东西。

我的开发环境:

  • Visual Studio 2015社区更新3
  • Net Framework 4.6.1

有人可以帮我吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

发生这种情况是因为某些程序集在升级它且版本4.0.0.0不再存在时仍引用System.Net.Http版本4.0.0.0。

你可以尝试的事情:

在项目文件夹中搜索System.Net.Http.dll。它通常在packagesRight click on dll > Properties > Goto Details tab > Find Product Version那里。

打开App.config,添加以下代码。 assemblyBinding应归入configuration > runtime。将current_version替换为您在上一步中找到的版本。

<configuration>
   <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
         <dependentAssembly>
            <assemblyIdentity name="System.Net.Http"
                              publicKeyToken="b03f5f7f11d50a3a"
                              culture="neutral" />
            <bindingRedirect oldVersion="4.0.0.0"
                             newVersion="current_version"/>
         </dependentAssembly>
      </assemblyBinding>
   </runtime>
</configuration>

这会将对4.0.0.0版本的任何号码重定向到current_version的{​​{1}} dll。