ASP.NET маршрутизация ignoreRoute не работает

Я не могу исключить несуществующие файлы из системы маршрутизации. Я имею дело с этим кодом в сценарии веб-форм:

public static void RegisterRoutes(RouteCollection routes)
{   
  routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
  routes.IgnoreRoute("{resource}.gif/{*pathInfo}");
  routes.IgnoreRoute("{resource}.jpg/{*pathInfo}");   
  Route r = new Route("{*url}", new MyRouteHandler());
  routes.Add(r);
}

Когда я отлаживаю

public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
    string path;

    IHttpHandler page;

    try
    {
        path = requestContext.RouteData.GetRequiredString("url");
        LogFile(requestContext, path);
    }

путь по-прежнему содержит несуществующие файлы GIF, JPG и т. д. Я хочу исключить все файлы с расширением, если это возможно

Что-то не так с кодом выше? Является ли порядок правильным, то есть добавить маршруты. Запись IgnoreRoute перед добавлением маршрута в RouteCollections?

2 ответа

В веб-формах вы можете использовать StopRoutingHandler. В следующем примере маршрутизация будет игнорироваться для файлов в папке /images, таких как http://yoursite.com/images/xyz.jpg

routes.Add(new Route("images/{resource}", new StopRoutingHandler())); 

IgnoreRoute это метод расширения ASP.NET MVC (System.Web.Mvc) - не работает в веб-формах.

Сделай это:

routes.Add(new Route("{resource}.gif/{*pathInfo}", new MyIgnoreHandler()));

Сопоставьте другие маршруты с обычным обработчиком.

Вы должны удалить тег "mvc" из этого вопроса.

Другие вопросы по тегам