Маршрутизация ASP.NET - игнорирование маршрутов для файлов с определенным расширением, независимо от каталога
Скажем, я хочу удалить любые сопоставленные маршруты для файлов с определенным расширением файла.
RouteTable.Routes.Ignore("{root}.hello");
Работает для любого файла с расширением .hello
в корневом каталоге, однако, как только я вхожу в любые подпапки, правило "игнорировать" не применяется.
Ive пробовал много разных комбинаций, но, похоже, не может получить тот, который не бросает исключение компилятора или не работает?
Ответы
Ответ 1
Ознакомьтесь с Phil blog относительно этого. В принципе, вы бы сделали что-то вроде этого:
Пример 1: Не выполнять маршрутизацию для любого запроса для всех файлов .aspx:
routes.IgnoreRoute("{*allaspx}", new {[email protected]".*\.aspx(/.*)?"});
Пример 2: не выполнять маршрутизацию для любого запроса для favicon.ico
routes.IgnoreRoute("{*favicon}", new {[email protected]"(.*/)?favicon.ico(/.*)?"});
Ответ 2
Если вы используете ASP.NET MVC, используйте IgnoreRoutes (метод расширения MVC)
Routes.IgnoreRoute("{*foo*}", new { foo = @"someregextoignorewhatyouwant"});
Если вы используете веб-формы ASP.NET, используйте StopRoutingHandler, который реализует IRouteHandler.
routes.Add(new Route("*someregextoignorewhatyouwant*", new StopRoutingHandler()));