Не удалось загрузить файл или сборку 'System.Net.Http, версия = 2.0.0.0 в MVC4 Web API - PullRequest
91 голосов
/ 24 февраля 2012

У меня странная проблема.
Я разработал приложение с MVC 4 и новым веб-API, и оно отлично работает локально.Я установил MVC4 на сервер и развернул приложение.Теперь я получаю следующую ошибку:

Не удалось загрузить файл или сборку 'System.Net.Http, версия = 2.0.0.0, культура = нейтральная, PublicKeyToken = 31bf3856ad364e35' или одна из ее зависимостей.Определение манифеста обнаруженной сборки не соответствует ссылке на сборку.(Исключение из HRESULT: 0x80131040)

Описание: во время выполнения текущего веб-запроса произошло необработанное исключение.Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в

Достаточно забавно, версия System.Net.Http, которую я локально имею либо в папке моего пакета, либо в ASP.Папка NET MVC 4 \ Assemblies: 1.0.0.0.Я на самом деле удалил ссылку на System.Net.Http из моего проекта, но я все еще получаю то же сообщение.Я немного смущен тем, откуда он получает ссылку на 2.0.0.0 и почему он будет работать локально, но не на сервере.

Просмотр зависимостей nuget:

ASP.NET WEbБазовые библиотеки API (бета-версия) зависят от 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, если даже не найду само приложение.

Ответы [ 17 ]

0 голосов
/ 08 февраля 2017

Для этой ошибки (и аналогичной) стоит пройтись через NuGet Consolidate (Solution> Manage NuGet Packages ...), чтобы убедиться, что одни и те же версии компонентов, на которые есть ссылки, указаны в каждой библиотеке классов, на которую есть ссылка в решении, поскольку даже немного более старая версия может иметь зависимости от других старых компонентов. Он прост в использовании в сочетании с обновлениями и может спасти много боли.

Это решило эту проблему для меня, и я бы сказал, что с ней необходимо ознакомиться, если вы создаете вспомогательные библиотеки, которые также ссылаются на MVC или другие веб-компоненты NuGet.

0 голосов
/ 08 февраля 2016

Перейдите к аналогичной проблеме, и директива, упомянутая во многих комментариях, работала нормально

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

Несмотря на то, что вы должны убедиться, что охват старой версии достаточно высок, в противном случае более новые версии могут быть не перенаправлены на нужную вам версию, и местоположение с использованием этой новой ссылки не будет работать должным образом, так как более старая ссылка уже находится в каталоге bin .

0 голосов
/ 28 января 2016

У меня была такая же проблема с Gembox.spreadsheet.dll версии 31.

"Не удалось загрузить файл или сборку" GemBox.Spreadsheet, Версия = 39.3.30.1095, Культура = нейтральная, PublicKeyToken =b1b72c69714d4847 'или одной из его зависимостей. Определение манифеста обнаруженной сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040) "

Я попробовал почти все из этих статей, и ни одна из них не сработала.Это было исправлено простым шагом.

Я пытался создать отдельные проекты, которые в основном устанавливали правильную ссылку на версию для DLL, и ошибка полностью исчезла из решения.

0 голосов
/ 22 августа 2013

Закройте проект, откройте его снова.Затем Чистый раствор + Сборка.У меня работает

0 голосов
/ 24 июля 2014

Это происходило на сервере после развертывания.Это было вызвано либо:

A) Старыми файлами в папке bin, которые все еще зависали, которые должны были быть удалены

, либо

B) Отсутствием доступа на чтениепапка для пользователя Application Pool Identity.

Другими словами, для нас это было решено путем установки разрешений на папки для сайта и удаления папки bin и ее повторного развертывания.

0 голосов
/ 12 декабря 2013

У меня была такая же проблема!Я взглянул на свою вкладку Warnings в VS и заметил, что один из моих пакетов nuget НЕПОСРЕДСТВЕННО ссылается на .NETFramework Version 4.5.0.0.Мне пришлось удалить этот пакет, а затем переустановить версию 4.0, но не забудьте указать версии пакета, поддерживающие 4.0 (по умолчанию он вернется к 4.5, я полагаю, если вы не укажете при установке пакета).Надеюсь, это поможет!

0 голосов
/ 01 октября 2013

Для версии 2.2.15.0 я сделал это:

<dependentAssembly>
    <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
    <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="2.2.15.0"/>
</dependentAssembly>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...