路由到硬编码的控制器

时间:2014-11-19 11:42:07

标签: c# asp.net asp.net-web-api

此路线映射不起作用:

configuration.Routes.MapHttpRoute(
    "EnvironmentTargetsView",
    "api/EnvironmentTargetsView/{id}/{userGuid}",
    new
    {
     id = RouteParameter.Optional,
     userGuid = RouteParameter.Optional,
    });

我收到错误:“找不到提供控制器名称的路由来匹配请求URI”

但是,此路由映射确实有效:

configuration.Routes.MapHttpRoute(
    "EnvironmentTargetsView", "api/{Controller}/{id}/{userGuid}",
    new
    {
     Controller = "EnvironmentTargetsView",
     id = RouteParameter.Optional,
     userGuid = RouteParameter.Optional,
    });

我很好奇为什么并且已经在这里寻找答案,但无法弄明白。我想对该值进行硬编码,因为它是我希望API采用的特定路径。我担心的是将它标记在routeTemplate中我现在不能使用类似模式的路由。

1 个答案:

答案 0 :(得分:2)

因为你指定了:

Controller = "EnvironmentTargetsView"

在第二个代码块中。如果将其添加到第一个代码块,它将工作并仍然具有硬编码值。

您还可以添加以下内容:

[Route("/api/EnvironmentTargetsView/{id}/{userGuid}]
public void Get(int id, guid userGuid) { }

给你的控制器方法。