Не удалось загрузить файл или сборку System.Web.Http, Version = 5.2.2.0

Я только что загрузил проект Asp.Net Web Api 2.2 на рабочий сервер, и я получил ошибку, указанную в названии.

В моем Web.config у меня уже есть это:

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

Файл существует в корзине. Что может вызвать это?
Все мои файлы API веб-интерфейса Asp.Net обновлены и отображаются в версии 5.2.2. Он отлично работает на моей машине dev.

Ответ 1

Установите Copy Local в значение true в свойствах для сборок System.Web.Http и System.Web.Http.WebHost и переустановите пакет.

Если это не решит вашу проблему, попробуйте переустановить пакет NuGet. Это, мы надеемся, исправит нарушенные зависимости. С консоли управления пакетами запустите эту команду:

Update-Package Microsoft.AspNet.WebApi -reinstall

Обязательно установите System.Web.Http.WebHost.

Ответ 2

Для меня из "Solution Explorer" я проверил версию "System.Web.Http" в ссылках проекта, которая была 5.2.3.0, поэтому в файле web.config я изменил:

<bindingRedirect oldVersion="0.0.0.0-5.2.2.0" newVersion="5.2.2.0" /> 

в

<bindingRedirect oldVersion="0.0.0.0-5.2.2.0" newVersion="5.2.3.0" />

затем построить. Это сработало для меня!

Ответ 3

Добавление ниже config внутри web.cofig решило мою проблему.

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

Ответ 4

Если у вас есть сборка в GAC с другой версией, она всегда будет загружаться, а не из папки bin.

Ответ 5

Я столкнулся с такой же точной ошибкой. Это было вызвано сценарием, который я использовал для развертывания приложения, которое заменило Web.config предыдущей версией. Web.config указывал неверную версию System.Web.Http. Удаление этого шага решило проблему.

Ответ 6

Я решил проблему в следующие шаги:

  1. Остановка сайта на удаленном веб-сервере
  2. Очистка папки сайта
  3. Опубликуем это снова
  4. Запуск сайта

Публикация в один клик не заменила правильную версию dll или удаленный сайт продолжал использовать файл.

Ответ 7

Другой способ сделать это, который не требует новой сборки или обновления/переустановки. С помощью Nuget необходимо сделать следующее в config.web:

Для dll у вас проблемы с, выполните следующие действия:

&lt;bindingRedirect oldVersion="0.0.0.0-65535.65535.65535.65535" newVersion="5.2.2.0"&gt;

Сегодня у меня была проблема, и эта небольшая настройка решила ее...