Не удалось загрузить файл или сборку "System.Web.Http 4.0.0 после обновления с 2012 по 2013 год"

Я сделал обновление в соответствии с. http://www.asp.net/mvc/tutorials/mvc-5/how-to-upgrade-an-aspnet-mvc-4-and-web-api-project-to-aspnet-mvc-5-and-web-api-2

Я получаю ошибку. Кто-нибудь еще получил эту ошибку?

Ошибка сервера в приложении "/".

Не удалось загрузить файл или сборку "System.Web.Http, Version = 4.0.0.0, Культура = нейтральная, PublicKeyToken = 31bf3856ad364e35 'или одна из ее зависимостей. Установленное определение манифеста сборки не сопоставить ссылку на сборку. (Исключение из HRESULT: 0x80131040)
Описание: Необработанное исключение произошло во время выполнения текущий веб-запрос. Просмотрите трассировку стека информацию об ошибке и где она возникла в коде.

Сведения об исключении: System.IO.FileLoadException: не удалось загрузить файл или сборка" System.Web.Http, Version = 4.0.0.0, Культура = нейтральная, PublicKeyToken = 31bf3856ad364e35 'или одна из его зависимостей. установленное определение манифеста сборки не соответствует сборке Справка. (Исключение из HRESULT: 0x80131040)

Ошибка источника:

Строка 48: Строка 49: Строка 50:} Строка 51: Строка 52: защищенная пустота Application_BeginRequest (объект отправитель, EventArgs e)

Исходный файл: d:\SM\7.4Test\WebAPIServerV2\ThirdPartyWebAPI\Global.asax.cs Строка: 50

След загрузки сборок: следующая информация может быть полезна для определить, почему сборка "System.Web.Http, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 'не может быть загружен.

=== Информация о состоянии предварительной привязки === LOG: DisplayName = System.Web.Http, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 (Полностью указано) LOG: Appbase = file:///D:/SM/7.4Test/WebAPIServerV2/ThirdPartyWebAPI/LOG: начальная PrivatePath = D:\SM\7.4Test\WebAPIServerV2\ThirdPartyWebAPI\bin Вызов сборки: ThirdPartyWebAPI, версия = 1.0.0.0, Культура = нейтральная, PublicKeyToken = нуль. === LOG: Это связывание начинается с контекста нагрузки по умолчанию. LOG: Использование файла конфигурации приложения: D:\SM\7.4Test\WebAPIServerV2\ThirdPartyWebAPI\web.config LOG: Использование файл конфигурации хоста: C:\Users\michalc\Documents\IISExpress\config\aspnet.config LOG: Использование файл конфигурации машины из C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config. LOG: Послеполитическая ссылка: System.Web.Http, Version = 4.0.0.0, Культура = нейтральная, PublicKeyToken = 31bf3856ad364e35 LOG: Попытка загрузка нового URL-адреса Файл:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary Файлы ASP.NET/root/9184b2ea/c6d4b139/System.Web.Http.DLL. ЖУРНАЛ: Попытка загрузки нового URL-адреса Файл:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Файлы/корень/9184b2ea/c6d4b139/System.Web.Http/System.Web.Http.DLL. ЖУРНАЛ: Попытка загрузки нового URL-адреса Файл:///D:/SM/7.4Test/WebAPIServerV2/ThirdPartyWebAPI/bin/System.Web.Http.DLL. WRN: сравнение названия сборки привело к несоответствию: майор Версия ERR: не удалось завершить настройку сборки (hr = 0x80131040). Исследование прекращено.

Трассировка стека:

[FileLoadException: не удалось загрузить файл или сборку" System.Web.Http, Версия = 4.0.0.0, Культура = нейтральная, PublicKeyToken = 31bf3856ad364e35 'или одной из его зависимостей. Установленное определение манифеста сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)] ThirdPartyWebAPI.WebApiApplication.Application_Start() в d:\SM\7.4Test\WebAPIServerV2\ThirdPartyWebAPI\Global.asax.cs: 50

[HttpException (0x80004005): не удалось загрузить файл или сборку 'System.Web.Http, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 'или одна из его зависимостей. установленное определение манифеста сборки не соответствует сборке Справка. (Исключение из HRESULT: 0x80131040)]
System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext контекст, приложение HttpApplication) +9935033
System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, контекст HttpContext, обработчики MethodInfo [] +118
System.Web.HttpApplication.InitSpecial(состояние HttpApplicationState, Обработчики MethodInfo [], IntPtr appContext, контекст HttpContext) +172
System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, контекст HttpContext) +336
System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +296

[HttpException (0x80004005): не удалось загрузить файл или сборку 'System.Web.Http, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 'или одна из его зависимостей. установленное определение манифеста сборки не соответствует сборке Справка. (Исключение из HRESULT: 0x80131040)]
System.Web.HttpRuntime.FirstRequestInit(контекст HttpContext) +9913572 System.Web.HttpRuntime.EnsureFirstRequestInit(контекст HttpContext) +101 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, контекст HttpContext) +254


Информация о версии: Microsoft.NET Framework Версия: 4.0.30319; Версия ASP.NET: 4.0.30319.18408

Ответ 1

Я исправил это с помощью переустановить пакет NuGet, который исправляет поврежденные зависимости. В диспетчере пакетов выполните:

Update-Package Microsoft.AspNet.WebApi -reinstall

Ответ 2

Чтобы решить проблему Не удалось загрузить файл или сборку. Ошибка "System.Web.Http" использует NuGet для установки Web-API Web 2.1.

В проводнике решений в ссылках щелкните правой кнопкой мыши и выберите управление пакетами nuget. (если не установить nuget)

enter image description here

В окне управления пакетами NuGet слева нажмите онлайн, затем в верхнем правом поиске веб-хостинга и установите веб-узел Microsoft ASP.NET Web API 2.1. (После установки кнопка установки изменится на зеленый).

После этого проект перезагрузится, и когда он будет построен снова, ошибка будет решена, и проект будет отлаживаться и запускаться. Ошибка исчезнет, ​​и вы можете быть "Ресурс не найден. Просто добавьте url (ex из localhost: 52088/to localhost: 52088api/products)

Ваш вопрос был хорошим и помог мне.

Надеюсь, что этот ответ поможет!

Ответ 3

Вам нужно добавить перенаправления сборки:

<configuration>

   ....

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

   ...

</configuration>

Скорее всего, вам нужно сделать это для нескольких сборок, таких как веб-хостинг и т.д.

Ответ 4

Или вы можете сделать это из консоли NuGet Package Manager

 Install-Package Microsoft.AspNet.WebApi -Version 5.0.0

И тогда вы сможете добавить ссылку на System.Web.Http.WebHost 5.0

Ответ 5

Когда я установил 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>

Ответ 6

Я просто установил Copy Local = true на отсутствующую сборку, и это сработало. Это, конечно, происходит, если щелкнуть правой кнопкой мыши отсутствующую ссылку (которая указана в сообщении об ошибке) и выбрать свойства; как показано ниже:

enter image description here

Это должно решить одну проблему, так как может быть несколько сборок, вызывающих проблему - я выбрал все сборки и щелкнул по ним правой кнопкой мыши; выбранные свойства; и установите для всех них значение Копировать Local = true; и затем переиздать.

Ответ 7

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

Обновите Visual studio, если у вас более старая версия до 15.5.4 (необязательно)

  1. Удалить все перенаправления привязки из web.config

  2. Добавьте это в файл csproj:

 <PropertyGroup>
  <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
  <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
</PropertyGroup>
  1. Построить.

  2. В папке bin должен быть файл (WebAppName).dll.config.

  3. В нем должны быть перенаправления. Скопируйте их в web.config

  4. Удалите приведенный выше фрагмент из файла csproj снова

  5. Он должен работать

Detailed Blog

Ответ 8

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

Ответ 9

Просто очевидный, но возможный полезный намек.... не забудьте проверить, что новая версия, указанная в вашей привязке сборки webconfig, является той же версией, которую вы ссылаетесь в ссылках на проект. (т.е. когда я пишу это... это будет 5.1.0.0, если вы недавно сделали NUGet на System.Web.Http

Ответ 10

 Installing NuGet package ASP.NET.MVC solved the issue for me. 
 To install package.
 - Right click on project 
 - Select "Manage NuGet Packages"
 - Select Online->Nuget.org from left menu
 - select "Microsoft ASP.NET MVC"
 - Click Install

 If you have already installed package earlier, please update the package by selecting Updates from left menu and then selecting "Microsoft ASP.NET" and click Update.

введите описание изображения здесь

введите описание изображения здесь

Ответ 11

Это может помочь кому-то.

Я решил пойти с приложением MVC4.

запустить проект, сработал

Затем установите несколько пакетов, например, ASP.NET ASP.NET API 2.2 (4 пакета)
Страница справки ASP.NET WEB API 2.2
API ASP.NET ASP.NET 2.2 OWIN

запустить проект, ту же ошибку, что упоминалось в вопросе

Решение:

В web.config

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


Решение проблемы


но затем обнаружена ошибка исправления, Чтобы решить эту проблему, перейдите в папку VIEW вашего проекта MVC4, найдите second файл web.config и измените версию с 2.0.0.0 на 3.0.0.0, как показано ниже.


<configSections>
    <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
      <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
    </sectionGroup>
  </configSections>

Ответ 12

В моем случае я вообще отсутствовал в моем web.config, который имел соответствующие переадресации привязки. Восстановление web.config разрешило ошибку.

Ответ 13

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

Ответ 14

Я нашел решение! Удалите папку с именем package в каталоге проекта и затем перестройте ее.

Ответ 15

ДА!!!

Install-Package Microsoft.AspNet.WebApi -Version 5.0.0

Он отлично работает в моем случае.... thnkz

Ответ 16

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

Ответ 17

Я мог бы решить аналогичную проблему с System.Net.HTTP, добавив ссылку на сборку в app.config основного приложения.

  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.1.1.1" newVersion="4.0.0.0" />
      </dependentAssembly></runtime>

Ответ 18

Как говорили другие, просто переустановите пакет MVC в свой веб-проект с помощью nuget, но обязательно добавьте пакет MVC в любые проекты в зависимости от веб-проекта, например, модульные тесты. Если вы создадите каждый включенный проект отдельно, вы увидите, что требуемые обновления требуют обновления.

Ответ 19

У меня была такая же проблема, и переустановка пакета не работает.

Мое приложение работает в LocalIIS (не IIS EXPRESS). Я разрешаю Load Load Trace и узнаю, что он хочет загрузить System.Web.Http нагрузку ниже temp catche. поэтому удалите все папки catch.

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Временные файлы ASP.NET [мое приложение]

Ответ 20

Я решил эту проблему, возвращая изменения, внесенные nuget в мой web.config после запуска nuget. Отмените изменения в предыдущей рабочей версии.

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

Ответ 21

Для решения этой проблемы мне пришлось переустанавливать пакеты Microsoft ASP.NET Web API 2.2 Help и Microsoft ASP.NET Web API 2.2 OWIN. Я повторно установил оба одновременно, но я думаю, что это было первое, что устранило проблему.

Я попробовал первые несколько предлагаемых здесь решений, но это не помогло, тогда я сравнивал свои зависимости с теми, которые работали (из курса на Pluralsight), и две вышеупомянутые зависимости были более низкой версией ( 5.0.0), поэтому я обновил их до 5.2.3 и начал работать.

Ответ 22

У меня это было из службы WCF. Для меня (поскольку проблема отображалась в локальном dev), мне просто пришлось удалить содержимое папки bin в рамках решения. Восстановление снова прекратилось.

Ответ 23

Версия ASP.NET: 4.0.30319.18408 принадлежит. Net4.5 и System.Web.Http Version = 4.0.0.0 совместима с .NET4.0. Поэтому версии, которые у вас есть, несовместимы. Вам следует обновить System.Web.Http до версии 5.0.0.0, совместимую с .Net4.5

Ответ 24

У меня была аналогичная проблема. Все работало раньше. Первоначально он был создан с использованием веб-форм, а затем добавлен веб-API для некоторых вещей.

  • Пробовал удалить, установить и переустановить пакет Microsoft.AspNet.WebApi.
  • Пробовал удалить папку из пакета и разрешить восстановление NuGet в VS.
  • Попробовал удалить отдельные ссылки на сборку (в разделе Ссылки) и переустановить пакеты.
  • Попробовал добавить переадресацию связывания в версию 5.2.3.0 в web.config, упомянутую в нескольких ответах. Ничто не работало для меня.

Что работало в Visual Studio, измените настройки профиля публикации с Release на Debug. Странно, но что сработало. Итак, поделитесь здесь.

Ответ 25

У меня возникла эта проблема при развертывании в Azure с использованием функции публикации. Не забудьте очистить файлы в пункте назначения.

Publish Settings -> File Publish Options drop down -> Check Remove additional files at destination

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

Ответ 26

Если вы используете несколько проектов для решения и вызываете метод в одном проекте для другого проекта, убедитесь, что все проекты (называемые проектом и проектом вызывающей стороны) используют уникальную версию 'System.Net.Http'.

Ответ 27

Измените флаг версии Specfic с true на false для dll в ссылке

Ответ 28

У меня была та же проблема с System.Web.Http.WebHost, версия = 5.2.6.0, на которую ссылались, но последний пакет NuGet был 5.2.7.0. Я отредактировал файлы web.config, переустановил пакет NuGet, а затем отредактировал файлы проектов visual studio для всех моих проектов, чтобы убедиться, что ссылки на 5.2.6.0 не сохранились. Даже после всего этого проблема сохранялась.

Затем я посмотрел в папке bin для проекта, который выдавал исключение, где я нашел DLL для одного из моих других проектов, который не является зависимостью и никогда не должен был быть там. Я удалил поврежденную DLL (которая была скомпилирована с использованием версии 5.2.6.0 System.Web.Http.WebHost), перестроил проблемный проект, и теперь он работает.