ASP.NET 4 Веб-формы Маршрутизация изображений - PullRequest
1 голос
/ 09 июля 2010

Я использую маршрутизацию веб-форм ASP.NET 4, например, так:

routes.MapPageRoute("page-browse", "{Language}/{Label}", "~/Default.aspx")

Таким образом, веб-адрес может выглядеть так: http://localhost/mywebsite/eng/home

В корне моего сайта у меня есть папка «Изображения».

Отображение изображения работает, когда я нахожусь в корне моего сайта, например используя http://localhost/mywebsite/default.aspx

Но при использовании маршрутизации это не работает, потому что относительный URL изображения будет выглядеть как http://localhost/mywebsite/eng/images вместо http://localhost/mywebsite/images

Есть ли способ предотвратить это с помощью механизма маршрутизации ASP.NET 4? Или это единственный способ использовать абсолютные ссылки на изображения?

Ответы [ 3 ]

5 голосов
/ 02 марта 2011

Две вещи, которые вы можете попробовать.

1) Установите для RouteExistingFiles значение false. Это остановит маршрутизацию для любого файла, который сервер совпадает с уже существующим. На самом деле будут маршрутизироваться только "виртуальные" URL, которые соответствуют маршруту:

routes.RouteExistingFiles = false;

2) Использовать маршрут StopRoutingHandler. Например, это остановит маршрутизацию на всех jpgs. Вы также можете настроить его так, чтобы он игнорировал весь каталог изображений.

routes.Add(new Route("*\.jpg", new StopRoutingHandler()));
1 голос
/ 05 марта 2011
  1. Создайте реализацию IHttpHandler, которая находит абсолютный путь к файлу из виртуального пути и отображает его как файловый поток.

  2. Создайте реализацию IRouteHandler, которая возвращает обработчик http, который я только что описал, если файл имеет расширение изображения или использует механизм маршрутизации по умолчанию.

  3. Зарегистрируйте обработчик маршрута, который будет использоваться в маршруте.

0 голосов
/ 09 июля 2010

Как вы ссылаетесь на ваши изображения? Вы должны просто иметь возможность использовать виртуальный путь к корню сайта, используя префикс «/» (если я не совсем понимаю вопрос)

, например

<img src="/mywebsite/images/image.jpg" />
...