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

问题描述 投票:7回答:5

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

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

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

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

c# .net azure
5个回答
3
投票

通过删除对问题引用的引用(指向我的.Net安装文件夹)并将其替换为我的packages文件夹中的引用文件,我解决了类似的问题(System.Web.Http和System.Net.Http.Formatting)错误它是由Microsoft.AspNet.WebApi NuGet包安装的。


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的解决方案。然后我的网站在全新部署后工作。

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-chosen-for-the-deployment/


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


0
投票

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.