将项目从MVC4升级到MVC5后,我遇到了以下错误。我跟着How to Upgrade an ASP.NET MVC 4 and Web API Project to ASP.NET MVC 5 and Web API 2
Assembly 'WebServices.WebApi.External, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' uses 'System.Web.Http, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' which has a higher version than referenced assembly 'System.Web.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
如何解决这个问题?
答案 0 :(得分:4)
我有类似的问题,这是由于我使用
_bin_deployableAssemblies
此文件夹中的System.Web.Http版本为4.我删除了此文件夹并且有效
答案 1 :(得分:4)
我也开始关注那篇文章而没有取得圆满成功,但是
要修复此“简单”,请创建新的web mvc项目并保存 然后在记事本中打开来自views,packages.config和.csproj的web.config,web.config
然后打开您的项目并查看文件版本号的条目差异 例如在包中你应该看到
<package id="Microsoft.AspNet.Mvc" version="5.0.0" targetFramework="net45" />
但你可以
<package id="Microsoft.AspNet.Mvc" version="4.x.x.x" targetFramework="net40" />
web.config中的
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
但你可以
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
在.csproj
中<Reference Include="System.Web.Helpers, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<Private>True</Private>
<HintPath>..\packages\Microsoft.AspNet.WebPages.3.0.0\lib\net45\System.Web.Helpers.dll</HintPath>
</Reference>
但你可以
<Reference Include="System.Web.Helpers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<Private>True</Private>
<HintPath>..\packages\Microsoft.AspNet.WebPages.2.0.20710.0\lib\net40\System.Web.Helpers.dll</HintPath>
</Reference>
用更新的值替换所有值
之后执行Ctrl + Shift + B. 并在nuget控制台中通过命令Update-Package
更新所有软件包对我来说,这项工作最终
答案 2 :(得分:1)
您应该检查Web Services.Web Api.External项目的所有引用。其中一个可能仍然使用System.Web.Http版本4.或者,尝试在web.config
中显式绑定它 <runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
答案 3 :(得分:1)
我通过安装System.Web.Http.WebHost解决了这个问题。您可以使用nuget进行安装并搜索WebHost。这是确切的链接https://www.nuget.org/packages/Microsoft.AspNet.WebApi.WebHost/5.1.0
您也可以从Package Manager控制台安装它: PM&GT;安装包Microsoft.AspNet.WebApi.WebHost
答案 4 :(得分:0)
有同样的问题。通过使用Nuget卸载旧的AttributeRouting包解决了这个问题。当然,不再需要它了。
这也是一个单元测试项目。
答案 5 :(得分:0)
就我而言,我刚从 Web.config 文件中删除了麻烦的绑定,解决了这个问题。
备份 web.config ,然后只需删除包含名称为dependentAssembly
的{{1}}元素的assemblyIdentity
元素。
System.Web.Http
它立即对我有用。