it-roy-ru.com

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» не содержит определения для «Настройка»

Файл: 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

ОБНОВЛЕНИЕ

После установки через 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>
48
Lucas_Santos

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

7
Lucas_Santos

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

 update-package Microsoft.aspnet.webapi -reinstall
94
Dan Ochiana

Я сделал:

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

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

11
garryp

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

6
FAHID

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

update-package Microsoft.aspnet.webapi.webhost -reinstall
5
Rajeev Sirohi Rajee

Специально для меня, я скачал из TFS кто-то на заводе решение и получил ошибку 

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

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

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

Для меня ОБНОВЛЕНИЕ JSON через Nuget было все, что мне нужно было сделать. 

1
Tom Stickel

1) Проверьте в папке вашего решения packages\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

0
AtyulyaKadam