ASP.NET маршрутизация MVC и статические данные (т.е. изображения, сценарии, и т.д.)

Если я имею запрос на ресурс в моем ASP.NET MVC1 (или 2) веб-приложение для статического ресурса, говорю... изображение или файл JavaScript, или файл CSS... делает платформу.NET, пытаются видеть, соответствует ли запрос списку маршрутов... и в конечном счете не может найти контроллер для него?

например.

Ресурс:/Content/Images/Foo.png

Делает этот запрос, проходят мой список маршрутов.. сбои, чтобы соответствовать каким-либо контроллерам / действия к этому запросу и затем делать попытку того пути непосредственно?

6
задан johnnyRose 15 July 2016 в 14:01
поделиться

3 ответа

Вы можете выбрать, отображать ли существующий файл или нет, задав свойство RouteCollection.RouteExistingFiles Свойство

Получает или задает значение, которое указывает , должна ли маршрутизация ASP.NET обрабатывать URL-адреса, соответствующие существующему файлу.

Вот что я прочитал из здесь :

Тем не менее, система маршрутизации по-прежнему проверяет файловую систему, чтобы увидеть, соответствует ли входящий URL файлу или диску, и если это так, маршрутизация игнорирует запрос (минуя любые записи маршрута, которые также могут совпадать с URL-адресом), так что файл будет обслуживаться напрямую. Это очень удобно для статических файлов, таких как изображения , Файлы CSS и JavaScript. Вы можете сохранить их в своем проекте (например, в папках / Content или / Script), а затем ссылаться на них и обслуживать их напрямую, как если бы вы вообще не использовали маршрутизацию. Поскольку файл действительно существует на диске, это имеет приоритет над вашей конфигурацией маршрутизации.

Если вместо этого вы хотите, чтобы ваша конфигурация маршрутизации имела приоритет над файлами на диске, вы можете установить для свойства RouteCollection RouteExistingFiles значение true. (По умолчанию - false.)

7
ответ дан 16 December 2019 в 21:36
поделиться

По умолчанию механизм маршрутизации игнорирует карты маршрутов для всех файлов, которые физически существуют на сервере. Короче говоря, вам не нужно ничего делать, чтобы приложение MVC могло ссылаться на статические файлы.

1
ответ дан 16 December 2019 в 21:36
поделиться

Вы также можете проделать небольшую хитрость в IIS. Я храню свои js, изображения, CSS и т. Д. В папке Content под виртуальным каталогом.

Если вы затем просматриваете свойства (в диспетчере IIS) папки Content, создайте ее как виртуальный каталог, а затем удалите сопоставление с подстановочными знаками. Затем верните папку Content к обычному каталогу. Это должно остановить обработку запросов к этим файлам обработчиком aspnet_isapi.

0
ответ дан 16 December 2019 в 21:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: