类型或命名空间名称'Route'找不到"使用“属性路由”

本文关键字:使用 属性 属性路由 路由 quot Route 命名空间 类型 找不到 | 更新日期: 2023-09-27 18:10:14

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

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

我已经尝试复制基本上所有的using语句从"从"项目到"到"项目,但没有明显的效果。没有MS文档建议需要NuGet包(甚至是using语句)。这两个项目都应该是ASP。. NET MVC 4.

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

有什么想法?

类型或命名空间名称'Route'找不到"使用“属性路由”

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

我做了一个'Update-Package Microsoft.AspNet.WebApi.WebHost - install'这招奏效了。有趣的是,在安装了最新版本之后还会发生这种情况与TFS不同的pc。我猜这是因为nuget包版本控制系统不能正常工作

属性路由是ASP原生的。asp.net MVC 5或更高版本,以及asp.net。. NET Web API 2.

对于以前的版本,您可以使用AttributeRouting项目中的一个包,它允许在以前的ASP版本中使用属性路由。asp.net MVC和Web API。可用的nuget包有:

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

请注意,每个版本的属性路由的命名空间是不同的,因此您必须查看项目源代码,或浏览安装包中包含的.dll,以找到正确的命名空间,并相应地更改using。例如:

using AttributeRouting.Web.Http;

在我的例子中,在web api项目中有两个使用引用:

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

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

当项目在多个解决方案之间共享时,使用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>