Есть ли способ иметь расширение файла в имени пакета?
Я хотел бы определить пакет как это:
bundles.Add(
new StyleBundle("~/style.css").Include(
//...
));
Если имя пакета просто "~/style"
это работает, но с расширением файла он всегда возвращает 404. Я подозреваю, что сервер ищет файлы CSS и JS на диске и игнорирует систему связывания, но я не могу найти никого другого, кто пытается включить расширения файлов в комплект имена. Можно ли обойтись без чего-то вроде переписывания URL?
1 ответ
Вы можете добавить следующее к вашему <system.webServer>
раздел в web.config:
<modules runAllManagedModulesForAllRequests="true" />
Это гарантирует, что запросы на статические ресурсы, такие как .js
а также .css
пройдет через управляемые модули и будет перехвачен ASP.NET MVC.
В качестве альтернативы runAllManagedModulesForAllRequests
для всех запросов вы можете настроить их только для URL, которые вам нужно использовать. Так что внутри <handlers>
добавить следующее:
<handlers>
<!-- ... -->
<add name="scriptBundle" verb="*" path="script.js" type="System.Web.Optimization.BundleHandler, System.Web.Optimization" preCondition="managedHandler" />
<add name="cssBundle" verb="*" path="style.css" type="System.Web.Optimization.BundleHandler, System.Web.Optimization" preCondition="managedHandler" />
</handlers>