如何使用web api将根目录映射到c#中的控制器?

时间:2012-10-04 15:05:45

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

我有一个c#web api(.net 4)Web应用程序。我有几个控制器。我想将新控制器映射到Web应用程序的根目录。

所以,我有http://localhost/listproducts

我希望网址为http://localhost

但我不知道如何告诉控制器使用根目录。它似乎是根据名称配置的。

我选择的解决方案是:

config.Routes.MapHttpRoute(
      name: "ListProductsApi",
             routeTemplate: "",
             defaults: new { controller = "ListProducts" } // Parameter defaults
);

技巧是defaults: new { controller = "ListProducts" } 行。 (我需要一个POST动作,所以我只是将动作移出。显然当你想要根路径“/”时,你需要明确命名控制器。

2 个答案:

答案 0 :(得分:7)

您只需更改已有的默认路线即可。它现在应该是这样的:

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index",
                    id = UrlParameter.Optional }
);

controller = "Home"更改为controller = "listproducts"

答案 1 :(得分:2)

它应该相当简单,只需更改global.asax.cs中的默认路由,而不是

routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}/{id}", // URL with parameters
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);

将其更改为

routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}/{id}", // URL with parameters
    new { controller = "ListProducts", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);