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" из этого вопроса.