也许相关信息:我有一个用.net 4.5构建的Web应用程序。我想部署到Azure的网站,但它只支持.net 4.0,所以我将项目降级为.net 4.0。 它在本地运行时仍然有效。
当我发布到Azure时,我收到此错误:
无法加载文件或程序集“System.Net.Http”或其依赖项之一。定位的程序集的清单定义与程序集引用不匹配。 (HRESULT异常:0x80131040)
我尝试用nuget删除Web API并读取它,正如SO提出的另一个问题所提出但我仍然遇到同样的问题。
我试过关闭/打开VS,然后清理/构建。
答案 0 :(得分:3)
我通过删除对问题引用的引用(指向我的.Net安装文件夹)并将其替换为引用文件,解决了类似的问题(System.Web.Http和System.Net.Http.Formatting)错误我的包文件夹,由Microsoft.AspNet.WebApi NuGet包安装。
答案 1 :(得分:2)
我遇到了同样的问题。但是,单独更新程序集版本,复制本地和特定版本设置并不能解决我的问题。在我的应用程序配置中,我将Web和辅助角色部署到云服务。创建服务后,在配置选项卡上,我将操作系统设置为Windows Server 2012 R2,以获得对.Net Framework 4.5.1的支持。但错误仍然存在。
经过进一步研究,我发现我的云服务的* .cscfg文件覆盖了门户网站设置,其中osFamily设置为“3”。当我开始我的项目时,它是在MVC3上,还没有WebAPI和框架4.5.1。 osFamily 3是当时最新的。
在我的最新部署中,我已将网站升级到4.5.1框架和MVC5。我验证它在我的开发机器上本地工作。但是在部署之后它没有工作,引用了System.Net.Http.Formatting版本4.0.0.0的错误。我后来看到了显示源错误的部署日志
“上传的软件包所需的名为NetFx451的功能在部署所选的OS *中不可用。”
这篇博客文章引导我找到将osFamily设置更改为4的解决方案。然后我的网站在全新部署后工作。
答案 2 :(得分:0)
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
答案 3 :(得分:0)
Azure Now支持配置选项卡上的.Net 4.5,您可以选择.Net framework V3.5或V4.5我有几个MVC Web应用程序,包含许多支持DLL,所有这些都是在V4.5中编译的。 Azure不支持的是V 4.5.1(来自VS 2013 RC版本)。
答案 4 :(得分:0)
我对带有一些部署到同一Azure App Service的Web作业的asp.net应用程序有相同的问题。通过在所有项目中引用相同的System.Net.Http(nuget包)来解决该问题。
答案 5 :(得分:0)
如果您执行的所有选项均无效,请尝试重新启动(以“管理员”身份关闭/打开)Visual Studio,然后清理/重建。这解决了我的问题。
尽管这仅适用于我的本地计算机,但尚未尝试使用其他环境(例如azure或任何服务器)。
我也曾遇到缺少 System.Net.Http 问题的经验。