13

我刚刚上传了一个Asp.Net Web Api 2.2项目到生产服务器,我得到了标题中指出的错误。无法加载文件或程序集System.Web.Http,版本= 5.2.2.0

在我的web.config我已经有这样的:

<dependentAssembly> 
    <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-5.2.2.0" newVersion="5.2.2.0" /> 
    </dependentAssembly> 

文件并在bin存在。什么会造成这种情况?
我所有的Asp.Net Web API文件都是最新的,并显示版本5.2.2。它可以在我的开发机器上正常工作。

回答

12

System.Web.HttpSystem.Web.Http.WebHost程序集的属性中设置Copy Localtrue并重新部署程序包。

如果这完全不能解决您的问题,请尝试重新安装NuGet软件包。这将有望纠正错误的依赖关系。从包管理控制台,运行以下命令:

Update-Package Microsoft.AspNet.WebApi -reinstall 

务必安装System.Web.Http.WebHost为好。

+1

重新安装它为我做了。 – 2015-12-17 19:32:35

+0

没有为我工作 – 2017-10-26 16:45:26

0

如果您在GAC中拥有不同版本的程序集,它将始终加载,而不是从bin文件夹中加载的。

+0

这简直是不真实的。他发布的dependentAssembly配置确保了这一点。 – 2014-12-02 16:32:11

+0

这是事实并非如此。如果您在GAC中有一个程序集,而在文件系统中有另一个程序集,名称和公钥,请尽可能地尝试,即使是加载其字节,但您始终会从GAC加载该程序集。尝试一下。 – 2014-12-02 16:47:31

3

对于我来说,从 “解决方案资源管理” 我查了一下 “System.Web.Http” 这是5.2.3.0的版本,所以我改:

<bindingRedirect oldVersion="0.0.0.0-5.2.2.0" newVersion="5.2.2.0" /> 

<bindingRedirect oldVersion="0.0.0.0-5.2.2.0" newVersion="5.2.3.0" /> 

再建。它为我工作!

+1

这对我有效! – Roboblob 2016-07-13 14:28:35

-3

另一种方式来做到这一点,它不需要一个新的版本或更新/重新利用的NuGet是在做的config.web如下:

对于你有问题,随着该DLL,执行以下操作:

&lt;bindingRedirect oldVersion="0.0.0.0-65535.65535.65535.65535" newVersion="5.2.2.0"&gt; 

今天我有一个问题,而这个小调整解决它......

0

我跑进了完全相同的错误。这是由我用来部署将Web.config替换为以前版本的应用程序的脚本引起的。 Web.config指定了System.Web.Http的错误版本。删除该步骤解决了问题。

相关问题