"类型或命名空间名称'路由'无法找到"使用"属性路由"

时间:2014-06-25 22:00:54

标签: c# asp.net asp.net-mvc-4 asp.net-web-api url-routing

试图将一些代码从一个工作项目拼接到另一个工作项目。 “from”项目使用“属性路由”,您可以在Web API控制器模块中嵌入[Route(…)]指令,以指示HTTP消息应路由到哪个服务例程。

在“from”项目中正常工作,但在“to”项目中我得到构建错误“找不到类型或命名空间名称'Route'(你是否缺少using指令或程序集引用?) “

我已经尝试将“from”项目中的所有using语句复制到“to”项目,但这没有明显的效果。没有MS文档表明需要NuGet包(甚至是using语句)。这两个项目都应该是ASP.NET MVC 4。

(是的,我用config.MapHttpAttributeRoutes();语句更新了WebApiConfig.cs。)

任何想法??

4 个答案:

答案 0 :(得分:28)

VedranMandić的评论为我解决了这个问题。我在这里重新发布它是因为我认为它应该是答案(或者至少是一个答案)。

  

我做了'Update-Package Microsoft.AspNet.WebApi.WebHost -reinstall'   它起作用了。搞笑这是在获得最新版本后发生的   来自TFS的不同PC。我猜这是因为nuget包   与版本控制系统无法正常工作

答案 1 :(得分:16)

属性路由在ASP.NET MVC 5或更高版本以及ASP.NET Web API 2中是本机的。

但是,有一个project that allows to use attribute routing it in previous version of ASP.NET MVC,and Web API。您应该仔细阅读本页。

正如您在链接页面中看到的那样,这个项目可以作为NuGet包使用,因此它可以像这样安装:

  • Install-Package AttributeRouting(适用于MVC)
  • Install-Package AttributeRouting.WebApi(适用于Web API)
  • Install-Package AttributeRouting.WebApi.Hosted(适用于自托管的Web API)

请注意,属性路由的名称空间对于每个版本以及MVC和Web API都是不同的。因此,您必须浏览已安装软件包中包含的.dll以找到正确的名称空间,并相应地更改using。例如:

using AttributeRouting.Web.Http;

答案 2 :(得分:5)

就我而言,在web api项目中有两个使用引用:

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

我删除System.Web.Mvc后,错误就消失了。

答案 3 :(得分:0)

在多个解决方案之间共享项目时,必须在解决方案相关路径中手动在 .csproj 中配置使用 Nuget 下载的库的引用。

例如,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>