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

WebAPI обнаружил ошибку ссылки, когда у меня есть сборка

Я создал приложение MVC 4 Web API внутри моего решения, но сейчас у меня есть 2 ошибки, и мне нужна помощь.

'System.Web.Http.HttpConfiguration' не содержит определения для "MapHttpAttributeRoutes" и метод расширения "MapHttpAttributeRoutes" принимает первый аргумент типа Вы можете найти "System.Web.Http.HttpConfiguration" (вы не видите используя директиву или ссылку на сборку?)

Эта ошибка возникает в следующем коде

Файл: WebApiConfig.cs(в папке App_Start)

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

    public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            // Web API configuration and services

            // Web API routes
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
        }
    }

Другой, находится в Global.asax

'System.Web.Http.GlobalConfiguration' не содержит определения для 'Configure'

Файл: Global.asax.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Http.WebHost;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;

public class WebApiApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        GlobalConfiguration.Configure(WebApiConfig.Register);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
    }
}

enter image description here

UPDATE

После установки через Nuget WebAPI WebHost (предложение @sa_ddam213) он устраняет некоторые проблемы, но теперь эта ошибка возникает при запуске моего приложения

Не удалось загрузить файл или сборку "System.Net.Http" или один из зависимостей. Установленное определение манифеста сборки не сопоставить ссылку на сборку

Файл Web.config имеет сборку

    <dependentAssembly>
        <assemblyIdentity name="System.Web.Http" publicKeyToken="31BF3856AD364E35" culture="neutral"/>
            <bindingRedirect oldVersion="0.0.0.0-5.2.0.0" newVersion="5.2.0.0"/>
    </dependentAssembly>
4b9b3361

Ответ 1

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

Ответ 2

Принудительная переустановка WebAPI может выполнить задание:

 update-package microsoft.aspnet.webapi -reinstall

Ответ 3

Я сделал:

get-project <project_name> | uninstall-Package Microsoft.AspNet.WebApi.WebHost -force

Затем переустановить (с конкретной версией, совместимой с версиями в других проектах)

get-project <project_name> | install-Package Microsoft.AspNet.WebApi.WebHost -Version 5.2.2

Это решило проблему для меня.

Ответ 4

Обновите пакеты NuGet. Работал для меня.

Ответ 5

Попробуйте обновить свои пакеты, выполнив следующую команду на консоли nugetmanager

update-package microsoft.aspnet.webapi.webhost -reinstall

Ответ 6

В частности, для меня я загрузил из TFS кого-то в решение для работы и получил ошибку

System.Web.Http.HttpConfiguration' does not contain a definition for 'MapHttpAttributeRoutes' and no extension method 'MapHttpAttributeRoutes' 

Я был О НАС, продолжая переустановку веб-api, но я знаю, что прошлый опыт заключается в том, что цепочка зависимостей порядка, в котором вы устанавливаете элементы, может оказаться немного драма.

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

Для меня UPDATE JSON через nuget все, что я должен был сделать.

Ответ 7

1) Проверьте пакеты папок решений \Microsoft.AspNet.WebApi.Client.5.2.3\lib\net45 имеет System.Web.Http.dll или нет. Он должен быть там. Если он недоступен, скопируйте его из любой другой папки запущенных пакетов проектов. 2) Удалите ссылку из System.Web.Http.dll из вашего проекта. 3) Добавьте новую ссылку, указав на новую .dll, которая предназначена для пакетов\Microsoft.AspNet.WebApi.Client.5.2.3\lib\net45\System.Web.Http.dll