5

我有 ac# 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 操作,所以我只是省略了操作。显然,当您想要根路由“/”时,您需要明确命名控制器。

4

2 回答 2

8

您只需更改已有的默认路由。它目前应该看起来像这样:

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

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

于 2012-10-04T15:15:07.317 回答
3

这应该相当容易,只需更改 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
);
于 2012-10-04T15:15:34.053 回答