无法加载文件或程序集“System.Net.Http”或其依赖项之一

也许相关信息:我有一个我用.net 4.5构建的Web应用程序。 我想部署到Azure的网站,但它只支持.net 4.0,所以我将项目降级为.net 4.0。 它在本地运行时仍然有效。

当我发布到Azure时,我收到此错误:

无法加载文件或程序集“System.Net.Http”或其依赖项之一。 定位的程序集的清单定义与程序集引用不匹配。 (HRESULTexception:0x80131040)

我尝试用nuget删除Web API并读取它,正如SO建议的另一个问题,但我仍然有同样的问题。
我试过关闭/打开VS,并清理/构建。

我有同样的问题。 但是,单独更新程序集版本,复制本地和特定版本设置并不能解决我的问题。 在我的应用程序配置中,我将Web和辅助角色部署到云服务。 创建服务后,在配置选项卡上,我将操作系统设置为Windows Server 2012 R2,以获得对.Net Framework 4.5.1的支持。 但错误仍然存​​在。

经过进一步研究,我发现我的云服务的* .cscfg文件覆盖了门户网站设置,其中osFamily设置为“3”。 当我开始我的项目时,它是在MVC3上,还没有WebAPI和框架4.5.1。 osFamily 3是当时最新的。

在我的最新部署中,我将我的站点升级到4.5.1框架和MVC5。 我validation它在我的开发机器上本地工作。 但是在部署之后它没有起作用,引用了System.Net.Http.Formatting版本4.0.0.0的错误。 我后来看到显示源错误的部署日志

“上传的软件包所需的名为NetFx451的function在部署所选的OS *中不可用。”

这篇博客文章引导我找到将osFamily设置更改为4的解决方案。然后我的网站在全新部署后工作。

http://tech.trailmax.info/2014/02/azure-deployment-the-feature-named-netfx451-that-is-required-by-the-uploaded-package-is-not-available-in-the- OS-选择换的部署/

System.NET.HTTP.dll仅依赖于System.dll,System.Core.dll和mscorlib.dll。

确保您的部署包中有此DLL(System.NET.HTTP.dll)(您可以执行RDP连接并检查部署文件夹)。 使用引用的“复制到本地”属性进行播放,或者在根级别的项目中包含此dll,并在属性中设置“内容”类型

我也看到.NET 2.0也支持System.Net.Http.dll – 这可能会导致问题。 所以另外在上面尝试设置引用属性“特定版本”= true

Azure Now在配置选项卡上支持.Net 4.5,您可以选择.Net框架版本V3.5或V4.5我有几个MVC Web应用程序,包含许多支持DLL,所有这些都在V4.5中编译。 Azure不支持的是V 4.5.1(来自VS 2013 RC版本)。

我在asp.net应用程序中遇到了同样的问题,其中一些Web作业部署到同一个Azure App Service。 它是通过引用所有项目中的相同System.Net.Http(nuget包)来解决的。