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


183

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

Я отримую помилку. Хтось ще отримав цю помилку?

Помилка серверу в програмі '/'

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

Деталі винятків: System.IO.FileLoadException: Не вдалося завантажити файл або збірку 'System.Web.Http, версія = 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, версія = 4.0.0.0, культура = нейтральна, PublicKeyToken = 31bf3856ad364e35" неможливо завантажити.

=== Інформація про стан попереднього зв’язування === ЛОГ: DisplayName = System.Web.Http, версія = 4.0.0.0, культура = нейтральна, PublicKeyToken = 31bf3856ad364e35 (повністю вказано) LOG: Appbase = файл: /// D: /SM/7.4Test/WebAPIServerV2/ThirdPartyWebAPI/ LOG: Початковий PrivatePath = D: \ SM \ 7.4Test \ WebAPIServerV2 \ ThirdPartyWebAPI \ bin Calling Assembly: ThirdPartyWebAPI, Версія = 1.0.0.0, Культура = нейтральна, PublicKeyTen null. === ЛОГ: Це прив'язка починається в контексті завантаження за замовчуванням. LOG: Використання файлу конфігурації програми: D: \ SM \ 7.4Test \ WebAPIServerV2 \ ThirdPartyWebAPI \ web.config LOG: Використання файлу конфігурації хоста: C: \ Користувачі \ michalc \ Документи \ IISExpress \ config \ aspnet.config LOG: Використання налаштування машини файл із C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ config \ machine.config. LOG: Довідкова інформація про політику: System.Web.Http, Версія = 4.0.0.0, Культура = нейтральна, PublicKeyToken = 31bf3856ad364e35 LOG: Спроба завантаження нового файлу URL-адреси: /// C: /Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files / root / 9184b2ea / c6d4b139 / System.Web.Http.DL. ЛОГ: Спроба завантаження нового файлу URL-адрес: /// C: /Windows/Microsoft.NET/Framework/v4.0.30319/ Тимчасові файли ASP.NET / root / 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). Зондування припинено. Спроба завантаження нового файлу URL: /// C: /Windows/Microsoft.NET/Framework/v4.0.30319/ Тимчасові файли ASP.NET / root / 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). Зондування припинено. Спроба завантаження нового файлу URL: /// C: /Windows/Microsoft.NET/Framework/v4.0.30319/ Тимчасові файли ASP.NET / root / 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). Зондування припинено. Не вдалося завершити налаштування збірки (hr = 0x80131040). Зондування припинено. Не вдалося завершити налаштування збірки (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, версія = 4.0.0.0, культура = нейтральна, PublicKeyToken = 31bf3856ad364e35' або одна з її залежностей. Маніфестне визначення розташованої збірки не відповідає посиланням на збірку. (Виняток з HRESULT: 0x80131040)]
System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode (HttpContext контекст, HttpApplication додаток) +9935033
System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS (IntPtr контексту програми, контекст 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, версія = 4.0.0.0, культура = нейтральна, PublicKeyToken = 31bf3856ad364e35' або одна з її залежностей. Маніфестне визначення розташованої збірки не відповідає посиланням на збірку. (Виняток з HRESULT: 0x80131040)]
System.Web.HttpRuntime.FirstRequestInit (HttpContext контекст) +9913572 System.Web.HttpRuntime.EnsureFirstRequestInit (HttpContext контекст) +101 System.Web.HttpRuntime.ProcessRequestNotificationPrivate (IIS7WorkerRequest СОГ, HttpContext контекст) : +254


Інформація про версію: Microsoft .NET Framework Версія: 4.0.30319; Версія ASP.NET: 4.0.30319.18408


ви намагалися повторно додати посилання на "System.Web.Http"
Ізікон

4
Будь ласка, позначте відповідь як прийняту.
Аліостад

Відповіді:


288

Я виправив це, перевстановивши пакет NuGet , який виправляє зламані залежності. Від менеджера пакунків запустіть:

Update-Package Microsoft.AspNet.WebApi -reinstall

1
Запуск веб-програми локально для мене було нормальним (F5), але при розгортанні на віддалений сервер (з WebDeploy) збірки не копіювалися на сервер. Я не був упевнений, збірки повинні були бути скопійовані чи ні. У будь-якому разі після виконання цієї команди всі необхідні збірки були позначені copy-local = true і після розгортання програми почали працювати належним чином
Guillermo Ruffino

3
Просто для додання більш врівноваженої картини - це не вирішило для мене проблеми.
Lewray

2
Не забудьте додати необхідне оновлення до будь-яких залежних проектів, таких як тести тощо.
DeeArgee

Я зробив це, і він вніс дуже багато змін, але я помітив, що він коригував перенаправлення прив'язки у web.config, я відкинув усі інші зміни, які він вніс, і це працювало на мене.
Містер

тепер я отримую нову помилку: нова версія - Версія = 5.2.3.0, і вона очікує версії = 4.0.0.0
Яр

84

Щоб усунути помилку завантаження файлу або збірку "System.Web.Http", використовуйте NuGet для встановлення Web API 2.1 WebHost.

У провіднику рішень у посиланнях клацніть правою кнопкою миші та оберіть керувати пакунками. (якщо немає там встановити нугет)

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

У вікні керування NuGet Packages ліворуч натисніть на Інтернеті, а потім вгорі праворуч пошукайте Web Host та встановіть Microsoft ASP.NET Web API 2.1 Web Host. (Після встановлення кнопки встановлення зміниться на зелену перевірку)

Після цього проект буде перезавантажений, і коли його буде знову побудовано, помилка буде усунена, і проект буде налагоджений та запущений. Помилка буде знищена, і ви можете бути "Ресурс неможливо знайти. Просто додайте URL-адресу (наприклад, з localhost: 52088 / до localhost: 52088api / products)

Ваше запитання було добре і допомогло мені.

Сподіваюся, що ця відповідь допомагає!


Спасибі Катто, це мені дуже зцілило.
Саурабх Соні

61

Вам потрібно додати переадресації збірки:

<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>

Швидше за все, вам доведеться зробити це для ще кількох збірок, таких як веб-хостинг тощо.


Я відредагував відповідь. Чомусь ім'я DLL було замінено на замок Віндзор System.Web.Http.
Аліостад

7
Ніколи не слід додавати бінарні переадресації, не переконуючись, що нова збірка є бінарною, сумісною з попередньою.
GETah

18

Або ви можете зробити це з консолі менеджера пакунків NuGet

 Install-Package Microsoft.AspNet.WebApi -Version 5.0.0

І тоді ви зможете додати посилання на System.Web.Http.WebHost 5.0


працюйте для мене, просто встановіть Install-Package Microsoft.AspNet.WebApi
Djama

17

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

1
Те саме тут у проекті, який був Web Api 2.2 з самого початку, при публікації в Azure. Проект спрацював непогано локально, але на Azure я отримав помилку з ОП. Додавання цих рядків до web.config та повторна публікація в Azure виправлено.
AronVanAmmers

4

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

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

Тоді це повинно вирішити одну проблему, оскільки може виникнути більше однієї збірки, яка спричинить проблему - я зробив це, що я вибрав усі збірки і клацнув правою кнопкою миші на них; вибрані властивості; і встановіть їх усі на Copy Local = true; а потім перевидати.


1
Працювали чудово. Мені довелося лише "Скопіювати локальне = правдиве" на System.Web.Http та System.Net.Http.Formatting
Sandip Subedi

4

Правильне рішення для вирішення цього питання - виконуючи кроки

. Оновіть 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


він не створює всіх прив'язок
batmaci

3

Для мене це збої тільки з помилкою на виробничому середовищі, а не на локальній машині; що вирішило це - видалити вміст папки / bin та знову відновити її.


Це те, що люди повинні перевірити. У мене виникло те саме питання. Виявилося, що на передньому кінці мого додатка є непотрібний dll для Microsoft.AspNet.Cors. У мене було видалено папку bin у системах prod, перевидано сайт та магію.
Рон

2

Просто очевидна, але можлива корисна підказка .... не забудьте перевірити, що нова версія, яку ви вказуєте у прив'язці збірки webconfig, є тією ж версією, на яку ви посилаєтесь у своїх посиланнях на проект. (тобто коли я це пишу ... це було б 5.1.0.0, якщо ви нещодавно зробили NUGet в System.Web.Http


2
 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.

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

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


2

Це може комусь допомогти.

Я вирішив піти з додатком MVC4.

запустити проект, працював

Потім встановлено кілька пакетів, таких як
Microsoft ASP.NET WEB API 2.2 (4 пакети)
Довідкова сторінка
Microsoft ASP.NET WEB API 2.2 Microsoft ASP.NET WEB API 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>


2

У моєму випадку я фактично пропустив своє web.config, що мало відповідні обов'язкові переадресації. Відновлення web.configусуненої помилки.


2

Я міг би вирішити подібну проблему з 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>

1

Я знайшов рішення! Видаліть папку з іменем пакета в каталозі проекту, а потім відновіть її для запуску.


1
<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>

1

ТАК!!!

Install-Package Microsoft.AspNet.WebApi -Version 5.0.0

Це добре працює в моєму випадку .... thnkz


2
Це лише дублікат наявної відповіді . Оскільки, здається, вам більше нічого не додати, будь ласка, видаліть цю.
zzzzBov

1

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


0

Як говорили інші, просто перевстановіть пакет MVC у ваш веб-проект за допомогою nuget, але не забудьте додати пакет MVC до будь-яких проектів залежно від веб-проекту, наприклад, тестування одиниць. Якщо ви будуєте кожен включений проект окремо, ви побачите, що відьом потрібне оновлення.


0

У мене була така ж проблема, і перевстановлення пакета не працює.

Моя програма працює в LocalIIS (не IIS EXPRESS). Я вмикаю Assembly Load Trace і дізнаюся , що він хоче завантажувати System.Web.Http завантаження знизу temp catche. тому видаліть усі папки спіймання в ньому.

C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Тимчасові файли ASP.NET [мій додаток]


0

Я вирішив цю проблему, повернувши зміни, які внесли до мого нуджета 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>

0

Що для мене вирішило проблему, це було повторно встановити довідкову сторінку Microsoft ASP.NET Web API 2.2 та пакети OWIN Microsoft ASP.NET Web API 2.2 . Я перевстановив обидва одночасно, але думаю, що саме це вирішило проблему.

Я спробував перші декілька запропонованих тут рішень, але це не допомогло, тоді я порівняв свої залежності з тими, що знаходяться в проекті, який працював (з курсу на Pluralsight), і дві залежності вище були нижчою версією (5.0.0 ) тому я оновив їх до 5.2.3, і вона почала працювати.


0

У мене це було в службі WCF. Для мене (оскільки ця проблема відображалася в локальному розробнику), я просто повинен був видалити вміст папки бін під рішенням. Відновлення спрацьовує ще раз.


0

Версія ASP.NET: 4.0.30319.18408 належить .Net4.5, а System.Web.Http Версія = 4.0.0.0 сумісна для .NET4.0. Тож наявні у вас версії не сумісні. Вам слід оновити System.Web.Http до версії 5.0.0.0, сумісної з .Net4.5


0

У мене було подібне питання. Все працювало раніше. Спочатку було зроблено за допомогою веб-форм, а пізніше для деяких речей було додано веб-API.

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

У Visual Studio було налаштовано зміни параметрів публікації профілю з Release на Debug. Дивно, але саме це спрацювало. Тож спільний доступ тут.


0

Цю проблему я отримав під час розгортання в Azure за допомогою функції Publish. Не забудьте очистити файли за призначенням.

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

Це вирішило моє питання, на випадок, якщо людям доведеться полювати за цим, як я. У моєму проекті / рішенні все було однаковою версією, тільки не в пункті призначення, до якого я розгортався.


0

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



0

У мене була така сама проблема з посиланням на System.Web.Http.WebHost, на версію = 5.2.6.0, але останній пакет NuGet був 5.2.7.0. Я відредагував файли web.config, знову встановив пакет NuGet, потім відредагував файли проектів візуальної студії для всіх моїх проектів, щоб упевнитись, що немає посилань на 5.2.6.0. Навіть після всього цього проблема зберігалася.

Потім я заглянув у папку bin для проекту, який кидав виняток, де я знайшов DLL для одного з моїх інших проектів, які не є залежними і ніколи там не мали бути. Я видалив зловмисну ​​DLL (яка була складена за допомогою версії 5.2.6.0 System.Web.Http.WebHost), відновила проблемний проект, і тепер він працює.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.