Подтвердить что ты не робот

Как сделать все статические файлы, такие как файлы css/images/js, не обрабатываться asp.net mvc?

Возможно ли, что статические файлы не будут обрабатываться движком mpc asp.net?

Могу ли я сделать это на уровне IIS или что-то в этом роде? (без необходимости создания отдельного веб-сайта IIS для статических файлов)

4b9b3361

Ответ 1

Вам нужно создать маршрут игнорирования для определенных типов файлов, которые вы не хотите обслуживать через ASP.NET MVC.

Добавьте к своим маршрутам следующее: для типов файлов, которые вы хотите игнорировать.

Следующие файлы для файлов в корневом каталоге:

routes.IgnoreRoute("{file}.css");
routes.IgnoreRoute("{file}.jpg");
routes.IgnoreRoute("{file}.gif");

Если вы хотите игнорировать файлы в определенном каталоге, вы можете сделать это:

routes.IgnoreRoute("assets/{*pathInfo}");

Если вы хотите объединить их в один маршрут, вы можете (например, игнорировать определенные типы файлов в каталоге):

routes.IgnoreRoute("{assets}", new { assets = @".*\.(css|js|gif|jpg)(/.)?" });

Эта перегрузка IgnoreRoute принимает URL-адрес (первый аргумент) и объект Constraints вещей, который нужно игнорировать.

Так как RouteConstraints в ASP.NET MVC можно реализовать несколькими способами (включая регулярное выражение), вы можете поместить стандартные регулярные выражения во второй аргумент.

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

Ответ 2

Будьте осторожны, ответ @george-shareer работает только для статических файлов только в корневом каталоге.

Чтобы ловить статические файлы во всех возможных каталогах/поддиректориях, используйте правило игнорирования с условием:

routes.IgnoreRoute("{*allfiles}", new { allfiles = @".*\.(css|js|gif|jpg|png)" });

Ответ 3

Статические файлы не обрабатываются ASP.NET MVC, если у вас нет маршрута, который соответствует URL статического файла. Возможно, вы спрашиваете о статических файлах, обработанных ASP.NET, в этом случае вам не следует использовать runAllManagedModulesForAllRequests="true". Здесь сообщение с дополнительной информацией.

Ответ 4

В Global.asax.cs в начале метода RegisterRoutes напишите следующее:

routes.IgnoreRoute("Content/{*pathInfo}");

заменив Content на имя папки, содержащей ваши статические файлы.

Джордж, однако, предоставил более полное решение