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

Есть ли способ иметь расширение файла в имени пакета?

Я хотел бы определить такой набор:

bundles.Add(
    new StyleBundle("~/style.css").Include(
        //...
));

Если имя пакета просто "~/style", это работает, но с расширением файла он всегда возвращает 404. Я подозреваю, что сервер ищет файлы CSS и JS на диске и игнорирует систему связывания, но я не могу найти любого другого, кто пытается включить расширения файлов в именах пакетов. Можно ли обойтись без переписывания URL?

4b9b3361

Ответ 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>