无法在MVC4 Web API中加载文件或程序集'System.Net.Http

我有一个奇怪的问题。

我使用MVC 4和新的Web API开发了一个应用程序,并且在本地运行良好。我在服务器上安装了MVC4并部署了该应用程序。现在我得到以下错误:


无法加载文件或程序集'System.Net.Http,版本= 2.0.0.0,区域性=中性,PublicKeyToken = 31bf3856ad364e35'或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自HRESULT的异常:0x80131040)


说明:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪以获取有关该错误及其起源的更多信息。


有趣的是,我本地在package文件夹或ASP.NET MVC 4 \ Assemblies文件夹中拥有的System.Net.Http版本是1.0.0.0。实际上,我从项目中删除了对System.Net.Http的引用,但是仍然收到相同的消息。我对它从何处获得2.0.0.0引用以及为什么它将在本地但不在服务器上工作感到困惑。


查看nuget依赖项:


ASP.NET WEb API核心库(Beta)依赖于System.Net.Http.Formatting。

而System.Net.Http.Formatting取决于System.Net.Http。

我想那是从哪里来的。但是我确实安装了此软件包的2.0.20126.16343版本,只是其中的dll版本为1.0.0.0


我想念什么吗?


更新:


这是另一个ASP.NET应用程序的子应用程序,但是另一个仍然基于WebForms。所以,事情变得混乱了。但是,如果我在web.config的“汇编”部分下进行了清洁,甚至找不到该应用程序本身了。


慕村9548890
浏览 722回答 3
3回答

江户川乱折腾

将我的应用部署到appharbor时,我遇到了同样的问题。它尚不支持.NET 4.5的问题。我做了什么。将我的项目切换到.NET 4.0配置文件。卸载的Web API NuGet软件包。再次安装Web API(Beta)NuGet软件包。验证.csproj文件包含所有引用的程序集,因此它将始终从Bin文件夹而不是GAC中获取该文件。

翻阅古今

在IIS 6.0上部署先前转换(从.NET 4.5到4.0)的Web应用程序时,我遇到了相同的错误。在web.config 运行时部分中,我找到了<dependentAssembly>&nbsp; &nbsp; <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>&nbsp; &nbsp; <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0"/></dependentAssembly>我已经改为<dependentAssembly>&nbsp; &nbsp; <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>&nbsp; &nbsp; <bindingRedirect oldVersion="0.0.0.0-1.0.0.0" newVersion="2.0.0.0"/></dependentAssembly>现在就像魅力一样工作。
打开App,查看更多内容
随时随地看视频慕课网APP