Переопределить список каталогов с помощью MVC URL маршрутизации - PullRequest
8 голосов
/ 03 октября 2011

Недавно я частично преобразовал приложение веб-форм 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/

Ответы [ 2 ]

2 голосов
/ 11 августа 2013

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

0 голосов
/ 21 января 2012

Используйте этот игнорируемый маршрут:

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".

...