Почему в ASP.NET MVC 3 маршрут по умолчанию не работает для контроллера с именем «ContentController»? - PullRequest
5 голосов
/ 28 сентября 2011

У меня новый проект asp.net mvc 3. Я никак не изменил маршруты. У меня есть контроллер с именем PageController и другой вызов контроллера ContentController.

Когда я захожу на domain.com/Page, действие Index на контроллере Page выполняется должным образом и отображает представление Index.

Когда я захожу на domain.com/Content, я получаю ошибку 404. Если я захожу на domain.com/Content/Index, он работает нормально.

Как устранить неполадки с этим единственным маршрутом?

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

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

Я попытался добавить дополнительный маршрут:

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

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

    }

Но дополнительный маршрут не изменил поведение приложения.

Что может быть причиной этого?

Ответы [ 2 ]

11 голосов
/ 28 сентября 2011

потому что есть физическая папка с именем content. наличие контроллера с таким же именем, как у физической папки, вероятно, будет иметь некоторые негативные последствия для вашего веб-сайта.

0 голосов
/ 28 сентября 2011

Попробуйте добавить следующее в определения вашего маршрута:

routes.RouteExistingFiles = true;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...