ASP.NET MVC 3路由:防止〜/ home访问?

bev*_*qua 7 seo asp.net-mvc-routing asp.net-mvc-3

我很好〜/映射到Home Index,并且〜/ Blog映射到Blog Index,但是如何防止〜/ Home映射到Home Index呢?我不希望从多个端点访问路由.

同样,如何防止〜/ Controller和〜/ Controller/Index中的所有其他"索引"操作都可以访问?

OK〜/
NO~/Home
NO~/Home/Index
OK~/AnyOtherController
NO~/AnyOtherController/Index

我想该规则应该类似于阻止任何默认操作可以显式访问,并且在home的情况下也可以防止仅使用控制器访问它.

可以这样做吗?这是在过去完成的吗?例如,SO不会这样做(你可以在这里那里访问)并且都渲染主页; 并且它们可能具有与"index"不同的默认操作名称,这可能也是可访问的路径.

bev*_*qua 4

像这样实现它是为了将这些路由视为 404 错误,但仍在我的 MVC 应用程序中(以便发生自定义错误视图):

    /// <summary>
    /// By not using .IgnoreRoute I avoid IIS taking over my custom error handling engine.
    /// </summary>
    internal static void RegisterRouteIgnores(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "IgnoreHome",
            "Home",
            new { controller = "Error", action = "NotFound" }
        );

        routes.MapRoute(
            "IgnoreIndex",
            "{controllerName}/Index/{*pathInfo}",
            new { controller = "Error", action = "NotFound" }
        );
Run Code Online (Sandbox Code Playgroud)

这确实允许通过使用访问 Home/Index 操作/home/{id},但我愿意接受这一点。