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

Hot*_*cks 13 c# asp.net url-routing asp.net-mvc-4 asp.net-web-api

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

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

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

(是的,我用config.MapHttpAttributeRoutes();声明更新了WebApiConfig.cs .)

有任何想法吗??

Cle*_*ud8 29

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

我做了一个'Update-Package Microsoft.AspNet.WebApi.WebHost -reinstall'并且它有效.有趣的是,在TFS的不同PC上获得最新版本之后.我想这是因为nuget包与版本控制系统无法正常工作


Jot*_*aBe 19

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

但是,有一个项目允许在以前版本的ASP.NET MVC和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;
Run Code Online (Sandbox Code Playgroud)


Dip*_*aul 5

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

using System.Web.Http;
using System.Web.Mvc; 
Run Code Online (Sandbox Code Playgroud)

我一移除System.Web.Mvc,错误就消失了。