Переопределение списка каталогов с помощью маршрутизации URL-адресов MVC

#asp.net-mvc #webforms #asp.net-mvc-routing

#asp.net-mvc #веб-формы #asp.net-mvc-routing

Вопрос:

Недавно я частично преобразовал Asp.Net приложение веб-форм для использования MVC. У нас все еще есть части приложения в веб-формах (.aspx-страницы) и мы используем маршрутизацию MVC для работы с контроллерами и тому подобное. Я добавил маршрут MVC, например

 routes.MapRoute("Users", "Users/{controller}/{action}/", new { controller = "Timesheet", action = "List" });
  

Существует папка с именем «Пользователи», которая содержит несколько страниц aspx, которые мы все еще используем.
Когда я нажимаю на URL http://localhost/Users/ -адрес, я получаю список каталогов содержимого папки «Пользователи». По-видимому, список каталогов имеет приоритет над маршрутизацией URL-адресов MVC, и это может быть переопределено путем изменения настроек сервера IIS7.

Как я могу переопределить это поведение с помощью изменений кода или web.config?

Ссылки:

http://forums.asp.net/t/1251156.aspx/1

http://learn.iis.net/page.aspx/121/iis-7-and-above-modules-overview/

Комментарии:

1. packtpub.com/article/mixing-asp.net-webforms-and-asp.net-mvc это метод, который я использовал для добавления MVC в существующее приложение веб-форм

Ответ №1:

Установка RouteExistingFiles=true в RouteCollection позволяет достичь именно этого. Это позволит ASP.NET MVC для обработки маршрутов даже для существующих каталогов.

Комментарии:

1. Хансельман обсуждал это здесь: hanselman.com/blog /…

Ответ №2:

Используйте этот ignoreroute:

 routes.IgnoreRoute("{WebPage}.aspx/{*pathInfo}");
  

Перечисление метода RegisterRoutes

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

            //routes.MapPageRoute("users", "users", "~/admin/default.aspx");

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

        }
  

Это исключило бы все страницы с расширением «.aspx» из маршрутизации.