使用" / Index"防止访问路由

时间:2015-09-10 22:02:46

标签: c# .net asp.net-mvc routes

在.NET MVC路由中,有没有办法让我在明确输入时阻止访问Index操作,即我希望它返回404,好像该操作不是有效的?

我想实现:

  

www.example.com /索引 => 404错误代码

     

www.example.com => " Root",应该在默认控制器上运行索引操作。

与StackOverflow类似,/Index给了我404,这也是我想要模拟的内容。

目前,//Index都为我提供了有效页面 - 起始页。

现在的默认路线:

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

2 个答案:

答案 0 :(得分:0)

假设您的意思是/Home/Index而不是/Index,则只需将IgnoreRoute添加到您的配置中。

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.IgnoreRoute("Home/Index");
        routes.IgnoreRoute("Home");

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

答案 1 :(得分:0)

我通过将默认路由(Root)的URL更改为空来解决了这个问题。

  

在ASP.NET Core 1.1.1中

app.UseMvc(routes =>
{
   routes.MapRoute("Home_Root", "", new { controller = "Home", action = "Index" });
});