Подтвердить что ты не робот

Отсутствует сборка HttpConfiguration

Я создаю сайт, используя MVC4. Я даже не мог начать, что у меня странная ошибка. Это мой код:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;

namespace MyProject
{
    public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
        }
    }
}

Сообщение об ошибке: Тип или имя сборки "HttpConfiguration" не существует в пространстве имен "System.Web.Http" (вам не хватает директивы использования или ссылки на сборку?)

Он также не распознает поле "Только для чтения" RouteParameter. Мне кажется, что это может иметь какое-то отношение к версии, моя версия System.Web - это версия 4.0.0.0.

Еще одна дополнительная информация заключается в том, что когда я печатаю "using System.Web", Intellisense ДОЛЖЕН распознавать DLL.Http

ОДНАКО, в коде он не распознает ни один из его параметров.

4b9b3361

Ответ 1

Я решил это. Дело в том, что когда я создал сайт, я обновил все пакеты через Nuget. Однако, поскольку я не использовал Entity Framework, я удалил его. Чтобы иметь возможность удалить этот пакет, мне потребовалось также удалить Microsoft.AspNet.Providers.Core 1.2... и я это сделал.

Этот недостающий пакет перепутал ситуацию. Я очистил проект и начал все заново. Я мог бы также использовать команду Update-Package в консоли PM и восстановить все потерянные пакеты. Однако, поскольку я сделал так много беспорядка по сравнению с небольшой (рядом с нулевой) работой, которую я сделал, я решил начать все заново.

Спасибо в любом случае!

Ответ 2

Для других, столкнувшихся с этой проблемой, мое решение было другим. Во-первых, я уменьшал проект с .net 4.5 до .net 4.0, но симптомы были такими же, как и выше:

Тип или имя сборки "HttpConfiguration" не существует в пространство имен "System.Web.Http" (вам не хватает директивы using или ссылка на сборку?)

Я наткнулся на сообщение в блоге, в котором объясняется, что существует связь между Newtonsoft.Json и HttpConfiguration, я удалил ссылку на Newtonsoft.Json из проекта и файл packages.config, а затем повторно установил Newtonsoft.Json из консоль менеджера пакетов:

Install-Package Newtonsoft.Json

Мне не удалось удалить Newtonsoft.Json из консоли управления пакета из-за других зависимостей, следовательно, нужно вручную удалить ссылку.

Здесь ссылка на статью: Newtonsoft.Json Hidden Dependencny на компиляции HttpConfiguration Breaks

Ответ 3

1. В обозревателе решений щелкните правой кнопкой мыши проект node и нажмите "Добавить ссылку".

2. В диалоговом окне "Добавить ссылку" выберите вкладку "Ассемблемы". И введите "system.web.http" в поле поиска в правом верхнем углу.

3. Выберите компоненты, которые вы хотите ссылаться, если он уже выбран, чем , сначала удалите ссылку, чем **, снова добавьте ссылку.

Восстановите проект еще раз. Пожалуйста, дайте мне знать, если это сработает. Спасибо.

Ответ 4

Я столкнулся с этой ошибкой при клонировании приложения MVC 4.0, которое раньше работало для меня. Моя проблема заключалась в том, что пакет Microsoft.Net.Http NuGet не восстанавливался должным образом. Я решил это с консоли NuGet:

Update-Package -reinstall Microsoft.Net.Http

Ответ 5

Мы начали испытывать эту проблему в одном из наших проектов с прошлой недели. Проект строился отлично 2 недели назад, а затем внезапно начал выбрасывать это исключение. В пакетах nuget для этого проекта не было внесено никаких изменений. Даже проверка более старой версии из SVN не привела к успешной сборке.

Из отчаяния мы обновили решение от VS2012 до VS2013, и вот и построим! Мы подозреваем, но не смогли подтвердить, что обновление оснастки, выполненное в Visual Studio 2013, повлияло на эту библиотеку в Visual Studio 2012.

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

Ответ 6

Убедитесь, что вы компилируете для Framework 4.5, а не 4.0. Это решило проблему для меня

Ответ 7

когда вы обновили и переустановили все пакеты AspNet от Nuget и, похоже, не было подходящего решения - перезагрузка Visual Studio меня спасла.

Ответ 8

Еще один сценарий. Я согласен с тем, что это связано только с вопросом, поскольку я являюсь чисто веб-API. Однако мой поиск привел меня сюда так...

У меня был существующий проект в решении, нацеленном на Framework 4.5.2.

Когда я добавил новый проект, он занял 4.5, поскольку я не уделял достаточного внимания. HttpConfiguration должным образом исчезла из метода регистрации веб-API.

Изменение цели на 4.5.2 разрешило проблему HttpConfiguration. Имейте в виду, что это также вызвало некоторое другое горе с RouteParameter: теперь у меня было два определения: одно в System.Web.Http и другое в System.Web.UI.WebControls. Довольно легко.

Я чувствую, что есть еще кое-что...