Имя контроллера ASP.NET конфликтует с именем папки - PullRequest
3 голосов
/ 10 июля 2011

В моем проекте ASP.NET MVC3 у меня есть папка с именем Content (папка по умолчанию для проекта MVC).Но у меня также есть контроллер с именем Content .И когда я хочу использовать действия этого контроллера по умолчанию, я просто использую http://domain/content/,, что эквивалентно http://domain/content/index. Но IIS возвращает ошибку 403 и думает, что яполучить список каталогов Content Folder .Ну, этот вопрос уже обсуждался в этом вопросе.Но я не знаю, как переписать свой URL, чтобы добавить к нему действие по умолчанию.Может кто-нибудь помочь, пожалуйста.

Ответы [ 2 ]

7 голосов
/ 27 октября 2013

Вы можете обойти это, изменив конфигурацию маршрутизации, указав:

routes.RouteExistingFiles = true;

Затем вам нужно будет установить некоторые правила игнорирования, чтобы предотвратить сожрание подлинного статического содержимого механизмом маршрутизации.

Например, в моем приложении есть папка Touch, и у меня также есть определенный маршрут для Touch.Итак, рабочая конфигурация:

routes.RouteExistingFiles = true;
routes.IgnoreRoute("Touch/Client/{*touchclientversion}", new { touchclientversion = @"(\d*)(/*)" });

Я согласен, что такого рода вещи обычно следует избегать, но иногда приятно иметь красивые URL: -)

0 голосов
/ 10 июля 2011

Вы можете добавить маршрут по умолчанию, например:

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

В вашем случае:

routes.MapRoute(
                "DefaultContent",                                              // Route name
                "{controller}/{action}/{id}",                           // URL with parameters
                new { controller = "Content", action = "Index", id = "" }  // Parameter defaults
            );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...