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

StackOverflow https://stackoverflow.com/questions/2681447

Вопрос

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

например.

Ресурс: /content/images/foo.png.

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

Это было полезно?

Решение

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

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

Вот что я читаю из здесь:

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

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

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top