it-swarm.com.ru

"Не удалось найти тип или имя пространства имен" Маршрут ", используя" атрибут маршрутизации "

Просто пытаюсь соединить некоторый код из одного рабочего проекта в другой. Проект "from" использует "маршрутизацию атрибутов", где вы встраиваете директивы [Route(…)] в модули контроллера Web API, чтобы указать, какое HTTP-сообщение должно направляться в какую подпрограмму службы. 

Работает нормально в проекте "from", но в проекте "to" я получаю ошибку сборки "Не удалось найти тип или имя пространства имен 'Route' (отсутствует директива using или ссылка на сборку?)"

Я попытался скопировать практически все операторы using из проекта «from» в проект «to», но это не имеет видимого эффекта. Ни одна из документации MS не предполагает, что требуется пакет NuGet (или даже оператор using). Оба проекта предположительно являются ASP.NET MVC 4.

(И да, я обновил WebApiConfig.cs с помощью оператора config.MapHttpAttributeRoutes();.)

Есть идеи??

11
Hot Licks

Маршрутизация атрибутов является родной в ASP.NET MVC 5 или более поздней версии и ASP.NET Web API 2.

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

Как вы можете видеть на связанной странице, этот проект доступен в виде пакета NuGet, поэтому его можно установить следующим образом:

  • Install-Package AttributeRouting (для MVC)
  • Install-Package AttributeRouting.WebApi (для веб-API)
  • Install-Package AttributeRouting.WebApi.Hosted (для автономного веб-API)

Обратите внимание, что пространства имен маршрутизации атрибутов различны для каждой версии, а также для MVC и веб-API. Таким образом, вы должны просмотреть .dll, включенную в установленный пакет, чтобы найти правильное пространство имен и соответственно изменить using. Например:

using AttributeRouting.Web.Http;
16
JotaBe

Этот комментарий Ведрана Мандича решил проблему для меня. Я публикую это здесь, потому что я думаю, что это должен быть ответ (или, по крайней мере, ответ).

Я сделал «Пакет обновлений Microsoft.AspNet.WebApi.WebHost -reinstall» и это сработало. Забавно, что это происходит после получения последней версии разные ПК от TFS. Я думаю, это происходит из-за пакетов nuget не работает должным образом с системой управления версиями

27
ClearCloud8

В моем случае в проекте web api было две ссылки:

using System.Web.Http;
using System.Web.Mvc; 

Как только я удалил System.Web.Mvc, ошибка исчезла. 

4
Dipendu Paul

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

Например, log4net должен быть настроен как:

<Reference Include="log4net, Version=1.2.15.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL">
   <HintPath>$(SolutionDir)\packages\log4net.2.0.5\lib\net45-full\log4net.dll</HintPath>
   <Private>True</Private>
</Reference>
0
Panos Roditakis