在控制器之前创建2个静态文字的路由

时间:2013-01-11 19:39:25

标签: asp.net-mvc asp.net-web-api asp.net-mvc-routing

好的我觉得这很直接,但我错过了什么。我正在映射Web API路由,并希望它如下:

http://localhost:1234/api/myBlog/Articles

认为这样可行:

routes.MapRoute(
   name: "BlogApi",                
   url: "api/myBlog/{controller}/{id}",
   defaults: new { controller = "Articles", id = UrlParameter.Optional }
);

'myBlog'段不是控制器或文件夹。我只是希望它成为URL的一部分。我尝试使用ArticlesController控制器在Controllers下创建一个名为“myBlog”的文件夹,但这并没有什么区别。我总是找不到404: 找不到与名为'myBlog'的控制器匹配的类型。

当我http://localhost:1234/api/myBlog路由Articles中的默认控制器没有被使用时也很奇怪,所以也想了解这一点。

如果我执行以下操作,我只能让它工作:

routes.MapRoute(
   name: "BlogApi",                
   url: "api/Articles/{id}",
   defaults: new { controller = "Articles", id = UrlParameter.Optional }
);

并致电:http://localhost:1234/api/Articles

我在这里缺少什么?谢谢!

1 个答案:

答案 0 :(得分:2)

使用:

GlobalConfiguration.Configuration.Routes.MapHttpRoute(
   name: "BlogApi",                
   routeTemplate: "api/myBlog/Articles/{id}",
   defaults: new { controller = "Articles", id = UrlParameter.Optional }
);

并将置于默认路线之前。