也许相关信息:我有一个我用.net 4.5构建的Web应用程序。我想部署到Azure的网站,但它只支持.net 4.0,所以我将项目降级为.net 4.0。它在本地运行时仍然有效。
当我发布到Azure时,我收到此错误:
无法加载文件或程序集“System.Net.Http”或其依赖项之一。定位的程序集的清单定义与程序集引用不匹配。 (HRESULT异常:0x80131040)
我尝试用nuget删除Web API并读取它,正如SO建议的另一个问题,但我仍然有同样的问题。 我试过关闭/打开VS,并清理/构建。
通过删除对问题引用的引用(指向我的.Net安装文件夹)并将其替换为我的packages文件夹中的引用文件,我解决了类似的问题(System.Web.Http和System.Net.Http.Formatting)错误它是由Microsoft.AspNet.WebApi NuGet包安装的。
我有同样的问题。但是,单独更新程序集版本,复制本地和特定版本设置并不能解决我的问题。在我的应用程序配置中,我将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的解决方案。然后我的网站在全新部署后工作。
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包)来解决的。