7

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

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

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

我已经尝试使用 nuget 删除 Web API 并阅读它,正如关于 SO 的另一个问题所建议的那样,但我仍然遇到同样的问题。
我试过关闭/打开VS,并清理/构建。

4

6 回答 6

3

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

于 2013-10-05T05:54:30.053 回答
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 的功能在为部署选择的操作系统 * 中不可用。”

这是一篇博客文章,它引导我找到将 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-为部署而选择的操作系统/

于 2014-10-28T19:01:22.327 回答
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

于 2012-09-03T07:15:21.090 回答
0

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

于 2013-10-05T06:04:35.173 回答
0

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

于 2018-10-15T10:44:05.817 回答
0

如果您所做的所有选项都不起作用,请尝试重新启动(以“管理员”身份关闭/打开)您的 Visual Studio,然后清理/重建。这解决了我的问题。

虽然这仅适用于我的本地机器,但尚未尝试使用其他环境,如 azure 或任何服务器。

我对缺少System.Net.Http问题有同样的经历。

于 2020-10-06T14:05:52.247 回答