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

7
也许相关信息:我使用 .net 4.5 构建了一个 Web 应用程序。我想将其部署到 Azure 的 Web Sites 上,但它只支持 .net 4.0,所以我将项目降级为 .net 4.0。在本地运行时仍然有效。
当我发布到 Azure 时,出现以下错误:
“无法加载文件或程序集 'System.Net.Http' 或其某个依赖项。所定位的程序集清单定义与程序集引用不匹配。 (HRESULT 的异常:0x80131040)”
我已经尝试使用 nuget 移除并重新添加 Web API,正如 SO 上的另一个问题所建议的那样,但我仍然遇到了同样的问题。我已经尝试关闭/打开 VS,并进行清理/构建。

它抱怨一个[AssemblyVersion]不匹配的问题。System.Net.Http仅支持.NET 4.5,所以这应该是问题的一部分。 - Hans Passant
@HansPassant,如果我将Web API添加到我的项目中,它似乎会自动添加,这是由.net 4.0支持的,对吗?在本地运行似乎很正常...不确定如何在Azure上运行它。 - Kyle
右键单击 NuGet 添加的引用,选择属性并将“复制本地”设置为 true,这个怎么样? - spender
@spender 刚刚检查过了,它们已经设置为 true 了,不幸的是。=/ 有其他的建议吗? - Kyle
现在有解决方案吗? - Blaise
6个回答

3

我曾遇到相似的问题(System.Web.Http和System.Net.Http.Formatting错误),通过移除指向我的.Net安装文件夹的问题引用,并用Microsoft.AspNet.WebApi NuGet包中安装的参考文件替换它来解决了这个问题。


我在..\packages\Microsoft.AspNet.WebApi.Client.5.2.3\lib\net45\System.Net.Http.Formatting.dll中找到了缺失的依赖项(System.Net.Http.Formatting)。 - Micah Zoltu

2
我遇到了同样的问题。然而,仅更新程序集版本、复制本地和特定版本设置并不能解决我的问题。在我的应用程序配置中,我向云服务部署了Web角色和Worker角色。创建服务后,在配置选项卡上,我将操作系统设置为Windows Server 2012 R2以获得对.NET Framework 4.5.1的支持。但是错误依旧。
经过进一步研究,我发现我的云服务的*.cscfg文件使用一个晦涩的osFamily设置覆盖了门户设置,该设置为“3”。当我启动项目时,它是基于MVC3的,还没有WebAPI和Framework 4.5.1。osFamily 3 是当时最新的。
在我的最新部署中,我将站点升级到了4.5.1框架和MVC5。我验证了它在开发机上正常工作。但是在部署后,它没有工作,并显示了关于未找到System.Net.Http.Formatting版本4.0.0.0的错误。后来我看到了部署日志,显示了源错误:
“The feature named NetFx451 that is required by the uploaded package is not available in the OS chosen for the deployment.”
这是一篇博客文章,引导我改变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 包含在项目的根级别,并在属性中设置类型为“内容”

另外,我看到 System.Net.Http.dll 也支持 .NET 2.0 - 这可能会导致问题。因此,除了上述操作,还要将引用的属性“特定版本”设置为 true


0

我曾经遇到过一个问题,就是在一个部署到同一Azure应用服务的asp.net应用程序中,有一些Web Jobs。通过在所有项目中引用相同的System.Net.Http(nuget包),问题得以解决。


0
Azure现在支持在配置选项卡上选择.Net框架版本V3.5或V4.5,我有几个MVC Web应用程序和许多支持的DLL都是在V4.5中编译的。但Azure不支持V4.5.1(来自VS 2013 RC版本)。

0
如果你尝试了所有的选项都没有用,请尝试重新启动(以管理员身份关闭/打开)你的Visual Studio,然后清理/重建。这个方法解决了我的问题。
虽然这只是针对我的本地机器,还没有在其他环境中尝试过,比如在Azure或任何服务器上。
我也遇到了缺少System.Net.Http问题的经历。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接