GlobalConfiguration.Configure () отсутствует после миграции Web API 2 и .NET 4.5.1

Недавно я подписался на это руководство по переносу моего проекта на .NET 4.5.1 и Web Api 2.

Первое, что просит вас сделать разработчик MS Рик Андерсон, - это изменить:

WebApiConfig.Register(GlobalConfiguration.Configuration);

to

GlobalConfiguration.Configure(WebApiConfig.Register);

в файле global.asax. Тем не менее, это дает мне ошибку, когда я пытаюсь построить:

Ошибка 1 "System.Web.Http.GlobalConfiguration" не содержит определения для "Настроить"

Мой проект в настоящее время находится на MVC 5 и Web Api 2 и .NET 4.5.1, но я думаю, что System.Web.Http по-прежнему считает, что это версия .NEt 4.0.

Как я могу это исправить?

Спасибо.

Редактировать:

Вот мои привязки к сборке:

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <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>
  <!--
  <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.Mvc" publicKeyToken="31bf3856ad364e35"/>
    <bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="5.0.0.0"/>
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35"/>
    <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35"/>
    <bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="5.0.0.0"/>
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35"/>
    <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
  </dependentAssembly> -->
</assemblyBinding>

Все закомментировано после того, как верхняя часть была прокомментирована, потому что я получал ошибку:

Предупреждение 2 Обнаружены конфликты между разными версиями одной и той же зависимой сборки, которые не удалось разрешить. Эти конфликты ссылок перечислены в журнале сборки, если для подробности журнала задано значение «Подробное».

и избавление от жестких оков исправляло это.


person nzondlo    schedule 26.11.2013    source источник
comment
Вы сначала удалили Microsoft.AspNet.Web.Helpers.Mvc?   -  person Blaise    schedule 27.11.2013
comment
посмотрите мой ответ stackoverflow.com/a/20653546/3114457, он должен решить ваши проблемы с миграцией   -  person Livius    schedule 20.12.2013
comment
Отметьте stackoverflow.com/a/21514748/2343 как правильный ответ!   -  person Sameer Alibhai    schedule 07.10.2014


Ответы (11)


Ему нужен system.web.http.webhost, который является частью этого пакета. Я исправил это, установив следующий пакет:

PM> Install-Package Microsoft.AspNet.WebApi.WebHost 

или найдите его в nuget https://www.nuget.org/packages/Microsoft.AspNet.WebApi.WebHost/5.1.0

person Tyrone Moodley    schedule 02.02.2014
comment
Добавлялся автоматически при добавлении контроллера API. Мне пришлось перезапустить VS2015, чтобы все заработало. Я также сделал все остальное, что рекомендовано на этой странице, поэтому не уверен, в чем проблема. - person Piotr Kula; 01.05.2015
comment
У меня это не сработало. Пакет уже установлен в моем проекте. - person Shimmy Weitzhandler; 09.12.2015
comment
Интересно то, что веб-хост уже был установлен и все еще не работал, затем я изменяю порядок, в котором GlobalConfiguration.Configure(WebApiConfig.Register); был вставлен в global.asax, вверх сразу после AreaRegistration, и он работал нормально. - person PedroSouki; 23.06.2016
comment
почему они не написали что-то подобное? мне нужно полчаса, чтобы найти твой ответ - person Homayoun Behzadian; 25.07.2018
comment
Сработало у меня после обновления Microsoft.AspNet.WebApi.WebHost до последней версии - person Peter van Kekem; 18.04.2019
comment
Еще пришлось добавить using System.Web.Http; в файл Global.asax.cs - person vbguyny; 02.10.2020

Ни одна из этих идей не помогла моему проекту с использованием MVC 5.2.2.

  • System.web.Http 5.2.2 уже был установлен
  • Удаление папки Packages и полная повторная загрузка всех библиотек NuGet ничего не дали
  • Web.config уже имел запись зависимой сборки для System.Web.Http

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

update-Package -reinstall Microsoft.AspNet.WebApi.WebHost

person Charles Burns    schedule 23.09.2014
comment
У меня была та же проблема, но переустановка не решила ее, по крайней мере, это выглядело так и сводило меня с ума, мне пришлось перезапустить VS2015, и все разобралось. - person Piotr Kula; 01.05.2015
comment
Похоже, что комбинация перезапуска vs2013 + переустановка решила проблему для меня - person Ram; 12.03.2016

GlobalConfiguration класс является частью Microsoft.AspNet.WebApi.WebHost пакета nuget ... Вы обновили этот пакет до Web API 2?

person Kiran Challa    schedule 26.11.2013
comment
да. Это версия 5.0.0 - person nzondlo; 27.11.2013
comment
у вас есть какие-либо перенаправления привязки сборки в вашем web.config? если да, не могли бы вы поделиться ими ... я специально ищу, есть ли какие-либо связанные со сборками System.Web.Http * .. - person Kiran Challa; 27.11.2013
comment
Я только что разместил все свои привязки сборки. - person nzondlo; 27.11.2013

Помимо использования консоли диспетчера пакетов, чтобы nuget обновил проект с помощью Install-Package Microsoft.AspNet.WebApi.WebHost для отсутствия GlobalConfiguration,

Мне понадобился Install-Package Microsoft.AspNet.WebApi.SelfHost, чтобы не было using System.Web.Http;

person Tyeth    schedule 19.05.2016
comment
Не могли бы вы объяснить немного больше? - person Dieter Meemken; 19.05.2016

Вы можете проверить, установлен ли ваш проект Microsoft.AspNet.WebApi.WebHost. Как оказалось, в моем случае Microsoft.AspNet.WebApi.WebHost был установлен в другом проекте, но не в том конкретном проекте, который в этом нуждался. Убедитесь, что в вашем файле packages.config есть такая строка:

<package id="Microsoft.AspNet.WebApi.WebHost" version="5.1.1" targetFramework="net45" />

Если его нет, значит в вашем проекте не установлено Microsoft.AspNet.WebApi.WebHost. Вы можете установить с помощью диспетчера пакетов Nuget или через консоль диспетчера пакетов. Чтобы установить из консоли диспетчера пакетов, выполните эту команду:

Install-Package Microsoft.AspNet.WebApi.WebHost
person Cameron Tinker    schedule 07.03.2014

GlobalConfiguration.Configure API доступен в "Microsoft.AspNet.WebApi.WebHost" version = "5.2.3"

а не в "Microsoft.AspNet.WebApi.WebHost" version = "4.0.0"

person user3508883    schedule 09.11.2015

Если проблема не исчезнет после удаления и установки Microsoft.AspNet.WebApi.WebHost, добавьте следующие элементы в web.config для работы globalconfiguration

 <dependentAssembly>
        <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.2.0.0" />
      </dependentAssembly>
person ratneshsinghparihar    schedule 08.07.2014
comment
Это уже было в моем web.config. По-прежнему возникает проблема (VS2015) - person Piotr Kula; 01.05.2015

"Install-Package Microsoft.AspNet.WebApi.Core" работал нормально.

person Terry Mosoma    schedule 09.11.2015

Моя проблема заключалась в том, что диспетчер пакетов nuget не выполнял настоящее обновление, но файлы содержали ссылки на более старые версии, поэтому я сначала удалил все установленные пакеты, связанные с mvc (включая razor и web api), а затем снова установил их и обновил версию бритва в views / web.config до версии 3.0.0.

person Soniku    schedule 28.08.2014

Ни одно из этих решений не помогло мне. У меня была путаница пакетов Nuget, которые не могли обновляться из-за циклической зависимости друг от друга.

Я бы хотел исправить это по старинке. Я создал новый проект MVC / web api и вручную скопировал System.Web.Http и System.Web.Http.WebHost из нового проекта в папки Nuget существующего решения. Оттуда я обновил ссылки, OMG, "просмотр" и исправил проблему.

person Micah B.    schedule 16.12.2015

это решило эту проблему, добавив пространство имен в файл Global.asax.cs.

using System.Web.Http;

это решило проблему.

person user1661290    schedule 25.09.2019