Ответ 1
У меня была аналогичная проблема, из-за меня с помощью
_bin_deployableAssemblies
В этой папке была версия System.Web.Http в версии 4. Я удалил эту папку, и она работала
Я получаю ниже ошибки после обновления моего проекта от MVC4 до MVC5. Я последовал за Как обновить проект ASP.NET MVC 4 и Web API до ASP.NET MVC 5 и веб-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'
Как решить эту проблему?
У меня была аналогичная проблема, из-за меня с помощью
_bin_deployableAssemblies
В этой папке была версия System.Web.Http в версии 4. Я удалил эту папку, и она работала
Я также следую этой статье без полного успеха при запуске, но
Чтобы исправить этот "простой", создайте новый проект web mvc и сохраните его затем откройте web.config, web.config из представлений, packages.config и .csproj в блокноте
затем откройте свой проект и посмотрите на разницу во входе для номеров версий файлов например в пакетах вы должны увидеть
<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 обновите все пакеты по comand Update-Package
для меня эта работа наконец
Необходимо проверить все ссылки на WebServices.WebApi.External project. Один из них может по-прежнему использовать 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>
Я решил это, установив System.Web.Http.WebHost. Вы можете установить с помощью nuget и выполнить поиск WebHost. Это точная ссылка https://www.nuget.org/packages/Microsoft.AspNet.WebApi.WebHost/5.1.0
вы также можете установить его из консоли диспетчера пакетов: PM > Установочный пакет Microsoft.AspNet.WebApi.WebHost
Была та же проблема. Решено путем удаления старого пакета AttributeRouting с помощью Nuget. Конечно, он больше не нужен.
Это тоже было в проекте модульного тестирования.
В моем случае я просто удалил неприятное связывание из файла Web.config, что решило проблему.
Создайте резервную копию web.config, затем просто удалите элемент dependentAssembly
, содержащий элемент assemblyIdentity
с именем System.Web.Http
.
<dependentAssembly>
<assemblyIdentity name="System.Net.Http" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
</dependentAssembly>
Это сработало для меня мгновенно.