ASP.NET 4 Routing поймать все - PullRequest
       37

ASP.NET 4 Routing поймать все

2 голосов
/ 23 августа 2010

У меня есть приложение ASP.NET 4 WebForms, которое использует маршрутизацию.Я хотел бы поймать 404 для маршрутов, которые не существуют:

    RouteTable.Routes.MapPageRoute("404", "{*url}", "~/error");

Проблема в том, что это также приведет к отображению на /error для страниц типа ImageHandler.ashx и Resource.axd.

Итак, я добавляю это:

    RouteTable.Routes.Ignore("{resource}.axd");
    RouteTable.Routes.Ignore("{handler}.ashx");

Но это игнорирует только Resource.axd в корневом каталоге, а не, например, /scripts/Resource.axd.

Как я могу это сделать?Или какие ограничения следует установить для перехвата всех PageRoute, чтобы он мог перехватывать только каталоги?

Ответы [ 2 ]

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

Я обнаружил похожую проблему с гибридным приложением WebForms / MCV3, которая привела меня к этому вопросу.В основном, только файлы Axd корневого уровня были обработаны должным образом, все, что за пределами этого пыталось перенаправить на контроллер.

Моя ситуация может быть другой, но в итоге я обнаружил, что что-то подобное работает:1004 *

Я не знаю много об Ignore и IgnoreRoutes, поэтому может быть лучшее / менее жадное решение, но оно работает.

0 голосов
/ 30 августа 2010

Вы пробовали это?

RouteTable.Routes.Ignore("{*resource}.axd");
RouteTable.Routes.Ignore("{*handler}.ashx");
...