ASP.NET MVC маршрутизация и статические данные (т. Е. Изображения, скрипты и т. Д.) - PullRequest
6 голосов
/ 21 апреля 2010

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

например.

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

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

Ответы [ 3 ]

7 голосов
/ 21 апреля 2010

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

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

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

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

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

1 голос
/ 21 апреля 2010

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

0 голосов
/ 21 апреля 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...