如何获得'System.Web.Http,版本 = 5.2.3.0?

Posted

技术标签:

【中文标题】如何获得\'System.Web.Http,版本 = 5.2.3.0?【英文标题】:How to get 'System.Web.Http, Version=5.2.3.0?如何获得'System.Web.Http,版本 = 5.2.3.0? 【发布时间】:2015-04-20 16:14:25 【问题描述】:

我刚刚创建了一个 MVC5 项目并从 nuget 添加了几个包,但是当我编译该项目时,我得到了这个错误。似乎其中一个包确实依赖于 system.web.http 版本 5.2.3.0,我在任何地方都找不到。我只是想知道如何获取最新版本的 system.web.http ?

错误 2 程序集 'System.Web.Http.WebHost, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 使用 'System.Web.Http, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'比引用的程序集 'System.Web.Http, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' d:\Backup 2014-12-25\Website-Projects\www.ptsol.com 更高的版本。 au\packages\Microsoft.AspNet.WebApi.WebHost.5.2.3\lib\net45\System.Web.Http.WebHost.dll

【问题讨论】:

【参考方案1】:

在包管理器控制台中

Install-Package Microsoft.AspNet.WebApi.Core -version 5.2.3

【讨论】:

我做了,但仍然给我同样的错误
PM> install-package microsoft.aspnet.webapi.core -version 5.2.3 Attempting to resolve dependency 'Microsoft.AspNet. WebApi.Client (≥ 5.2.3)'。正在尝试解决依赖项“Newtonsoft.Json (≥ 6.0.4)”。 'Microsoft.AspNet.WebApi.Core 5.2.3' 已安装。 www.ptsol.com.au 已经引用了“Microsoft.AspNet.WebApi.Core 5.2.3”。
@JohnHadikusumo 为您的所有项目执行此操作。您似乎有一个旧版本的依赖项目。 是的,这会起作用。在运行此命令之前和之后仔细阅读您的 Web.config 和 packages.config,您会看到发生了什么变化。 解决了我的问题。 我不得不改用Install-Package Microsoft.AspNet.WebApi.Client -Version 5.2.7(.Client 而不是.Core)。我已经有了 .Core 5.2.7,但我仍然收到错误消息。 nuget.org/packages/Microsoft.AspNet.WebApi.Client【参考方案2】:

我做了Install-Package Microsoft.AspNet.WebApi.Core -version 5.2.3,但它仍然没有用。然后查看我的项目 bin 文件夹,发现它仍然有旧的 System.Web.Mvc 文件。

所以我手动将更新的文件从包中复制到 bin 文件夹中。然后我又开始运行了。

【讨论】:

【参考方案3】:

修复它的一种方法是修改 web.config 文件中的程序集重定向。

修改如下:

<dependentAssembly>
        <assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>

<dependentAssembly>
        <assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="4.0.0.0" />
</dependentAssembly>

所以 oldVersion 属性应该从“...-4.0.0.0”更改为“...-5.2.3.0”。

【讨论】:

这对我有用。我们将bindingRedirect 设置为&lt;bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" /&gt;,但将其更改为使用4.0.0.0。对我来说仍然没有意义,因为应该使用 NuGet 包 DLL 而不是 GAC 版本,但是嘿,它工作......所以谢谢!【参考方案4】:

安装包 Microsoft.AspNet.WebApi.Core -version 5.2.3

然后在项目中添加引用->浏览。按下浏览按钮并转到 C:\Users\UserName\Documents\Visual Studio 2015\Projects\ProjectName\packages\Microsoft.AspNet.Mvc.5.2.3\lib\net45 并添加需要的.dll文件

【讨论】:

【参考方案5】:

卸载并重新安装 NuGet 包对我有用。

    从项目中删除所有旧引用。

在包管理器控制台中执行:

    UnInstall-Package Microsoft.AspNet.WebApi.Core -version 5.2.3 Install-Package Microsoft.AspNet.WebApi.Core -version 5.2.3

【讨论】:

就这个解决了我的问题。我做了这么多,胜利行动是如此简单。【参考方案6】:

您安装的软件包向 5.2.3.0 版 dll 引入了依赖项,正如上面的用户 Bracher 所示。 Microsoft.AspNet.WebApi.Cors 是一个示例包。我采取的路径是更新 MVC 项目 proir 到任何包安装:

Install-Package Microsoft.AspNet.Mvc -Version 5.2.3

https://www.nuget.org/packages/microsoft.aspnet.mvc

【讨论】:

【参考方案7】:

在你的 nuget 包管理器中安装它

Install-Package Microsoft.AspNet.WebApi.WebHost -Version 5.2.7

粘贴

使用 System.Web.Http;

这应该可以工作

【讨论】:

以上是关于如何获得'System.Web.Http,版本 = 5.2.3.0?的主要内容,如果未能解决你的问题,请参考以下文章

如何解决错误“尝试通过安全透明方法'System.Web.Http.GlobalConfiguration.get_Configuration()

如何绕过 System.Web.Http.AuthorizeAttribute.IsAuthorized

如何在 .Net Web API 中包含 System.Web.Http.Cors 参考 dll

使用 System.Web.Http.ApiController + Postman 进行身份验证 - 没有遇到断点/不确定这是如何工作的

未能加载文件或程序集“System.Web.Http.WebHost, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e3

System.Web.Mvc.HttpPostAttribute vs System.Web.Http.HttpPostAttribute? [duplicate]