Возможно ли, что статические файлы не будут обрабатываться движком mpc asp.net?
Могу ли я сделать это на уровне IIS или что-то в этом роде? (без необходимости создания отдельного веб-сайта IIS для статических файлов)
Возможно ли, что статические файлы не будут обрабатываться движком mpc asp.net?
Могу ли я сделать это на уровне IIS или что-то в этом роде? (без необходимости создания отдельного веб-сайта IIS для статических файлов)
Вам нужно создать маршрут игнорирования для определенных типов файлов, которые вы не хотите обслуживать через 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 можно реализовать несколькими способами (включая регулярное выражение), вы можете поместить стандартные регулярные выражения во второй аргумент.
Если вы хотите реализовать пользовательское ограничение, есть много полезной документации по этому вопросу (скажем, если ваше ограничение является динамическим во время выполнения).
Будьте осторожны, ответ @george-shareer работает только для статических файлов только в корневом каталоге.
Чтобы ловить статические файлы во всех возможных каталогах/поддиректориях, используйте правило игнорирования с условием:
routes.IgnoreRoute("{*allfiles}", new { allfiles = @".*\.(css|js|gif|jpg|png)" });
Статические файлы не обрабатываются ASP.NET MVC, если у вас нет маршрута, который соответствует URL статического файла. Возможно, вы спрашиваете о статических файлах, обработанных ASP.NET, в этом случае вам не следует использовать runAllManagedModulesForAllRequests="true"
. Здесь сообщение с дополнительной информацией.
В Global.asax.cs
в начале метода RegisterRoutes
напишите следующее:
routes.IgnoreRoute("Content/{*pathInfo}");
заменив Content
на имя папки, содержащей ваши статические файлы.
Джордж, однако, предоставил более полное решение